Index: Makefile.in =================================================================== diff -u -r752365e2a4c7ef57fc487bfff9bb387e72ccf533 -r57c47e5fff431976511c200231567024bea09ff4 --- Makefile.in (.../Makefile.in) (revision 752365e2a4c7ef57fc487bfff9bb387e72ccf533) +++ Makefile.in (.../Makefile.in) (revision 57c47e5fff431976511c200231567024bea09ff4) @@ -346,7 +346,7 @@ test-core: $(TCLSH_PROG) $(TCLSH) $(src_test_dir_native)/object-system.xotcl -libdir $(PLATFORM_DIR) $(TESTFLAGS) $(TCLSH) $(src_test_dir_native)/destroytest.tcl -libdir $(PLATFORM_DIR) $(TESTFLAGS) - $(TCLSH) $(src_test_dir_native)/method-modifiers.xotcl -libdir $(PLATFORM_DIR) $(TESTFLAGS) + $(TCLSH) $(src_test_dir_native)/method-modifiers.tcl -libdir $(PLATFORM_DIR) $(TESTFLAGS) $(TCLSH) $(src_test_dir_native)/var-access.tcl -libdir $(PLATFORM_DIR) $(TESTFLAGS) $(TCLSH) $(src_test_dir_native)/varresolutiontest.tcl -libdir $(PLATFORM_DIR) $(TESTFLAGS) $(TCLSH) $(src_test_dir_native)/info-method.tcl -libdir $(PLATFORM_DIR) $(TESTFLAGS) Index: TODO =================================================================== diff -u -rcf4cb6fb4333cf8601b79f037a186a9a2f82fa43 -r57c47e5fff431976511c200231567024bea09ff4 --- TODO (.../TODO) (revision cf4cb6fb4333cf8601b79f037a186a9a2f82fa43) +++ TODO (.../TODO) (revision 57c47e5fff431976511c200231567024bea09ff4) @@ -834,6 +834,9 @@ - rename xotcl1.xotcl to xotcl.tcl - some cleanup (version variables, etc.) in xotcl.tcl +- renamed tests/method-modifiers.xotcl to tests/method-modifiers.tcl +- changed "require xotcl::test" to "... next::test" + TODO: - nameing * .c-code: @@ -875,7 +878,6 @@ - rename predefined.xotcl to .tcl - migrate further test from .xotcl to .tcl (based on next instead of xotcl) - check ::xotcl references in serializer -- change "require xotcl::test" to "... nx::test" - copy decls for objectMethod and classMethod as comments to xotcl.c, fix and check order Index: doc/index.html =================================================================== diff -u -r752365e2a4c7ef57fc487bfff9bb387e72ccf533 -r57c47e5fff431976511c200231567024bea09ff4 --- doc/index.html (.../index.html) (revision 752365e2a4c7ef57fc487bfff9bb387e72ccf533) +++ doc/index.html (.../index.html) (revision 57c47e5fff431976511c200231567024bea09ff4) @@ -23,7 +23,7 @@
Index: library/lib/pkgIndex.tcl =================================================================== diff -u -rcf4cb6fb4333cf8601b79f037a186a9a2f82fa43 -r57c47e5fff431976511c200231567024bea09ff4 --- library/lib/pkgIndex.tcl (.../pkgIndex.tcl) (revision cf4cb6fb4333cf8601b79f037a186a9a2f82fa43) +++ library/lib/pkgIndex.tcl (.../pkgIndex.tcl) (revision 57c47e5fff431976511c200231567024bea09ff4) @@ -10,13 +10,13 @@ package ifneeded XOTcl 2.0 [list source [file join $dir xotcl.tcl]] package ifneeded next::doc 0.1 [list source [file join $dir doc-tools.xotcl]] +package ifneeded next::test 1.0 [list source [file join $dir test.tcl]] package ifneeded xotcl::htmllib 0.1 [list source [file join $dir htmllib.xotcl]] package ifneeded xotcl::metadataAnalyzer 0.84 [list source [file join $dir metadataAnalyzer.xotcl]] package ifneeded xotcl::mixinStrategy 0.9 [list source [file join $dir mixinStrategy.xotcl]] package ifneeded xotcl::package 0.91 [list source [file join $dir package.xotcl]] package ifneeded xotcl::script 0.9 [list source [file join $dir Script.xotcl]] package ifneeded xotcl::staticMetadataAnalyzer 0.84 [list source [file join $dir staticMetadata.xotcl]] -package ifneeded xotcl::test 2.0 [list source [file join $dir test.tcl]] package ifneeded xotcl::trace 0.91 [list source [file join $dir trace.xotcl]] package ifneeded xotcl::upvar-compat 1.0 [list source [file join $dir upvarcompat.xotcl]] package ifneeded xotcl::wafecompat 0.9 [list source [file join $dir wafecompat.tcl]] Index: library/lib/test.tcl =================================================================== diff -u -r752365e2a4c7ef57fc487bfff9bb387e72ccf533 -r57c47e5fff431976511c200231567024bea09ff4 --- library/lib/test.tcl (.../test.tcl) (revision 752365e2a4c7ef57fc487bfff9bb387e72ccf533) +++ library/lib/test.tcl (.../test.tcl) (revision 57c47e5fff431976511c200231567024bea09ff4) @@ -1,4 +1,4 @@ -package provide xotcl::test 2.0 +package provide next::test 1.0 package require next namespace eval ::nx::test { Index: tests/UNIVERSAL.test =================================================================== diff -u -r81c800c8b9cb42ef6743d9b80ac2be5ca211a69a -r57c47e5fff431976511c200231567024bea09ff4 --- tests/UNIVERSAL.test (.../UNIVERSAL.test) (revision 81c800c8b9cb42ef6743d9b80ac2be5ca211a69a) +++ tests/UNIVERSAL.test (.../UNIVERSAL.test) (revision 57c47e5fff431976511c200231567024bea09ff4) @@ -5,7 +5,7 @@ set pkgdir [file dir [info script]]/.. lappend auto_path $pkgdir -package require xotcl::test +package require next::test set tclsh [info nameofexecutable] set dir [file dir [info script]] Index: tests/actiweb.test =================================================================== diff -u -r81c800c8b9cb42ef6743d9b80ac2be5ca211a69a -r57c47e5fff431976511c200231567024bea09ff4 --- tests/actiweb.test (.../actiweb.test) (revision 81c800c8b9cb42ef6743d9b80ac2be5ca211a69a) +++ tests/actiweb.test (.../actiweb.test) (revision 57c47e5fff431976511c200231567024bea09ff4) @@ -6,7 +6,7 @@ package require XOTcl; namespace import -force ::xotcl::* set pkgDir [file dirname [info script]]/.. lappend auto_path $pkgDir -package require xotcl::test +package require next::test #package require xotcl::package; package verbose 1 package require xotcl::comm::httpAccess #package require xotcl::trace Index: tests/aliastest.tcl =================================================================== diff -u -r752365e2a4c7ef57fc487bfff9bb387e72ccf533 -r57c47e5fff431976511c200231567024bea09ff4 --- tests/aliastest.tcl (.../aliastest.tcl) (revision 752365e2a4c7ef57fc487bfff9bb387e72ccf533) +++ tests/aliastest.tcl (.../aliastest.tcl) (revision 57c47e5fff431976511c200231567024bea09ff4) @@ -1,5 +1,5 @@ package require next; namespace import -force ::nx::* -package require xotcl::test +package require next::test Test parameter count 10 Test case alias-preliminaries { Index: tests/destroytest.tcl =================================================================== diff -u -r752365e2a4c7ef57fc487bfff9bb387e72ccf533 -r57c47e5fff431976511c200231567024bea09ff4 --- tests/destroytest.tcl (.../destroytest.tcl) (revision 752365e2a4c7ef57fc487bfff9bb387e72ccf533) +++ tests/destroytest.tcl (.../destroytest.tcl) (revision 57c47e5fff431976511c200231567024bea09ff4) @@ -1,5 +1,5 @@ package require next; namespace import ::nx::* -package require xotcl::test +package require next::test Test parameter count 10 Index: tests/doc.xotcl =================================================================== diff -u -rbb58b68431fe35dd6ff16e69044705e1246d0dda -r57c47e5fff431976511c200231567024bea09ff4 --- tests/doc.xotcl (.../doc.xotcl) (revision bb58b68431fe35dd6ff16e69044705e1246d0dda) +++ tests/doc.xotcl (.../doc.xotcl) (revision 57c47e5fff431976511c200231567024bea09ff4) @@ -1,5 +1,5 @@ package require next -package require xotcl::test +package require next::test package require next::doc namespace import -force ::nx::* Index: tests/forwardtest.xotcl =================================================================== diff -u -r81c800c8b9cb42ef6743d9b80ac2be5ca211a69a -r57c47e5fff431976511c200231567024bea09ff4 --- tests/forwardtest.xotcl (.../forwardtest.xotcl) (revision 81c800c8b9cb42ef6743d9b80ac2be5ca211a69a) +++ tests/forwardtest.xotcl (.../forwardtest.xotcl) (revision 57c47e5fff431976511c200231567024bea09ff4) @@ -1,6 +1,6 @@ # -*- Tcl -*- package require XOTcl; namespace import ::xotcl::* -package require xotcl::test +package require next::test ########################################### # trivial object delegation Index: tests/info-method.tcl =================================================================== diff -u -r752365e2a4c7ef57fc487bfff9bb387e72ccf533 -r57c47e5fff431976511c200231567024bea09ff4 --- tests/info-method.tcl (.../info-method.tcl) (revision 752365e2a4c7ef57fc487bfff9bb387e72ccf533) +++ tests/info-method.tcl (.../info-method.tcl) (revision 57c47e5fff431976511c200231567024bea09ff4) @@ -1,5 +1,5 @@ package req next -package require xotcl::test +package require next::test nx::Object create o { :alias set ::set Index: tests/interceptor-slot.xotcl =================================================================== diff -u -r752365e2a4c7ef57fc487bfff9bb387e72ccf533 -r57c47e5fff431976511c200231567024bea09ff4 --- tests/interceptor-slot.xotcl (.../interceptor-slot.xotcl) (revision 752365e2a4c7ef57fc487bfff9bb387e72ccf533) +++ tests/interceptor-slot.xotcl (.../interceptor-slot.xotcl) (revision 57c47e5fff431976511c200231567024bea09ff4) @@ -1,5 +1,5 @@ package require next -package require xotcl::test +package require next::test namespace import ::nx::* Index: tests/method-modifiers.tcl =================================================================== diff -u --- tests/method-modifiers.tcl (revision 0) +++ tests/method-modifiers.tcl (revision 57c47e5fff431976511c200231567024bea09ff4) @@ -0,0 +1,279 @@ +package require next; namespace import ::nx::* +package require next::test + +Test parameter count 10 + +Class create C { + # methods + :method plain_method {} {return [self proc]} + :public method public_method {} {return [self proc]} + :protected method protected_method {} {return [self proc]} + + # forwards + :forward plain_forward %self plain_method + :public forward public_forward %self public_method + :protected forward protected_forward %self protected_method + + # setter + :setter plain_setter + :public setter public_setter + :protected setter protected_setter + + # alias + :alias plain_alias [C info method name plain_method] + :public alias public_alias [C info method name public_method] + :protected alias protected_alias [C info method name protected_method] + + # object + :object method plain_object_method {} {return [self proc]} + :public object method public_object_method {} {return [self proc]} + :protected object method protected_object_method {} {return [self proc]} + :object forward plain_object_forward %self plain_object_method + :public object forward public_object_forward %self public_object_method + :protected object forward protected_object_forward %self protected_object_method + :object setter plain_object_setter + :public object setter public_object_setter + :protected object setter protected_object_setter + :object alias plain_object_alias [:object info method name plain_object_method] + :public object alias public_object_alias [:object info method name public_object_method] + :protected object alias protected_object_alias [:object info method name protected_object_method] +} +C create c1 { + # methods + :method plain_object_method {} {return [self proc]} + :public method public_object_method {} {return [self proc]} + :protected method protected_object_method {} {return [self proc]} + + # forwards + :forward plain_object_forward %self plain_object_method + :public forward public_object_forward %self public_object_method + :protected forward protected_object_forward %self protected_object_method + + # setter + :setter plain_object_setter + :public setter public_object_setter + :protected setter protected_object_setter + + # alias + :alias plain_object_alias [:info method name plain_object_method] + :public alias public_object_alias [:info method name public_object_method] + :protected alias protected_object_alias [:info method name protected_object_method] +} +C public setter s0 +C protected setter s1 +? {c1 s0 0} 0 +? {::nx::core::dispatch c1 s1 1} 1 +C object setter s3 +? {C s3 3} 3 + +# create a fresh object (different from c1) +C create c2 +# test scripted class level methods +Test case scripted-class-level-methods { + ? {c2 plain_method} "plain_method" + ? {c2 public_method} "public_method" + ? {catch {c2 protected_method}} 1 + ? {::nx::core::dispatch c2 protected_method} "protected_method" +} + +# class level forwards +Test case class-level-forwards { + ? {c2 plain_forward} "plain_method" + ? {c2 public_forward} "public_method" + ? {catch {c2 protected_forward}} 1 + ? {::nx::core::dispatch c2 protected_forward} "protected_method" +} + +# class level setter +Test case class-level-setter { + ? {c2 plain_setter 1} "1" + ? {c2 public_setter 2} "2" + ? {catch {c2 protected_setter 3}} 1 + ? {::nx::core::dispatch c2 protected_setter 4} "4" +} + +# class level alias ....TODO: wanted behavior of [self proc]? not "plain_alias"? +Test case class-level-alias { + ? {c2 plain_alias} "plain_method" + ? {c2 public_alias} "public_method" + ? {catch {c2 protected_alias}} 1 + ? {::nx::core::dispatch c2 protected_alias} "protected_method" +} + +########### + +# scripted class-object level methods +Test case scripted-class-object-level { + ? {C plain_object_method} "plain_object_method" + ? {C public_object_method} "public_object_method" + ? {catch {C protected_object_method}} 1 + ? {::nx::core::dispatch C protected_object_method} "protected_object_method" +} + +# class-object level forwards +Test case class-object-level-forwards { + ? {C plain_object_forward} "plain_object_method" + ? {C public_object_forward} "public_object_method" + ? {catch {C protected_object_forward}} 1 + ? {::nx::core::dispatch C protected_object_forward} "protected_object_method" +} + +# class-object level setter +Test case class-object-level-setter { + ? {C plain_object_setter 1} "1" + ? {C public_object_setter 2} "2" + ? {catch {C protected_object_setter 3}} 1 + ? {::nx::core::dispatch C protected_object_setter 4} "4" +} + +# class-object level alias ....TODO: wanted behavior of [self proc]? not "plain_alias"? +Test case class-object-level-alias { + ? {C plain_object_alias} "plain_object_method" + ? {C public_object_alias} "public_object_method" + ? {catch {C protected_object_alias}} 1 + ? {::nx::core::dispatch C protected_object_alias} "protected_object_method" +} + +########### + +# scripted object level methods +Test case scripted-object-level-methods { + ? {c1 plain_object_method} "plain_object_method" + ? {c1 public_object_method} "public_object_method" + ? {catch {c1 protected_object_method}} 1 + ? {::nx::core::dispatch c1 protected_object_method} "protected_object_method" +} + +# object level forwards +Test case object-level-forwards { + ? {c1 plain_object_forward} "plain_object_method" + ? {c1 public_object_forward} "public_object_method" + ? {catch {c1 protected_object_forward}} 1 + ? {::nx::core::dispatch c1 protected_object_forward} "protected_object_method" +} + +# object level setter +Test case object-level-setter +? {c1 plain_object_setter 1} "1" +? {c1 public_object_setter 2} "2" +? {catch {c1 protected_object_setter 3}} 1 +? {::nx::core::dispatch c1 protected_object_setter 4} "4" + +# object level alias ....TODO: wanted behavior of [self proc]? not "plain_alias"? +Test case object-level-alias { + ? {c1 plain_object_alias} "plain_object_method" + ? {c1 public_object_alias} "public_object_method" + ? {catch {c1 protected_object_alias}} 1 + ? {::nx::core::dispatch c1 protected_object_alias} "protected_object_method" + + ? {lsort [c1 info methods]} \ + "plain_object_alias plain_object_forward plain_object_method plain_object_setter public_object_alias public_object_forward public_object_method public_object_setter" + ? {lsort [C object info methods]} \ + "plain_object_alias plain_object_forward plain_object_method plain_object_setter public_object_alias public_object_forward public_object_method public_object_setter s3" +} + +C destroy + +Test case mixinguards { + # define a Class C and mixin class M + Class create C + Class create M + # register the mixin on C as a class mixin and define a class + # mixinguard + C mixin M + C mixinguard M {1 == 1} + ? {C info mixinguard M} "1 == 1" + C mixinguard M {} + ? {C info mixinguard M} "" + + # now the same as object mixin and object mixin guard + C object mixin M + C object mixinguard M {1 == 1} + ? {C object info mixinguard M} "1 == 1" + C object mixinguard M {} + ? {C object info mixinguard M} "" +} + +Test case mixin-via-objectparam { + # add an object and class mixin via object-parameter and via slots + Class create M1; Class create M2; Class create M3; Class create M4 + Class create C -mixin M1 -object-mixin M2 { + :mixin add M3 + :object mixin add M4 + } + + ? {lsort [C object info mixin]} "::M2 ::M4" + ? {lsort [C info mixin]} "::M1 ::M3" + C destroy + M1 destroy; M2 destroy; M3 destroy; M4 destroy; +} + +# testing next via nonpos-args +Test case next-from-nonpos-args { + + Object create o { + :method bar {-y:required -x:required} { + #puts stderr "+++ o x=$x, y=$y [self args] ... next [self next]" + return [list x $x y $y [self args]] + } + } + Class create M { + :method bar {-x:required -y:required} { + #puts stderr "+++ M x=$x, y=$y [self args] ... next [self next]" + return [list x $x y $y [self args] -- {*}[next]] + } + } + + o mixin M + ? {o bar -x 13 -y 14} "x 13 y 14 {-x 13 -y 14} -- x 13 y 14 {-x 13 -y 14}" + ? {o bar -y 14 -x 13} "x 13 y 14 {-y 14 -x 13} -- x 13 y 14 {-y 14 -x 13}" +} + + + +# +Test case attribute-method { + + Class create C { + set x [:attribute a] + ? [list set _ $x] "::nx::core::classes::C::a" + + # attribute with default + :attribute {b b1} + :public attribute {c c1} + :protected attribute {d d1} + + set X [:object attribute A] + ? [list set _ $X] "::C::A" + + # object attribute with default + :object attribute {B B2} + :public object attribute {C C2} + :protected object attribute {D D2} + } + + C create c1 -a 1 + ? {c1 a} 1 + ? {c1 b} b1 + ? {c1 c} c1 + ? {c1 d} "::c1: unable to dispatch method 'd'" + + ? {C A 2} 2 + ? {C B} B2 + ? {C C} C2 + ? {C D} "Method 'D' unknown for ::C. Consider '::C create D ' instead of '::C D '" + + Object create o { + set x [:attribute a] + ? [list set _ $x] "::o::a" + + # attribute with default + :attribute {b b1} + :public attribute {c c1} + :protected attribute {d d1} + } + ? {o a 2} 2 + ? {o b} b1 + ? {o c} c1 + ? {o d} "::o: unable to dispatch method 'd'" +} \ No newline at end of file Fisheye: Tag 57c47e5fff431976511c200231567024bea09ff4 refers to a dead (removed) revision in file `tests/method-modifiers.xotcl'. Fisheye: No comparison available. Pass `N' to diff? Index: tests/mixinoftest.xotcl =================================================================== diff -u -r752365e2a4c7ef57fc487bfff9bb387e72ccf533 -r57c47e5fff431976511c200231567024bea09ff4 --- tests/mixinoftest.xotcl (.../mixinoftest.xotcl) (revision 752365e2a4c7ef57fc487bfff9bb387e72ccf533) +++ tests/mixinoftest.xotcl (.../mixinoftest.xotcl) (revision 57c47e5fff431976511c200231567024bea09ff4) @@ -1,6 +1,6 @@ # testing mixinof package require XOTcl; namespace import ::xotcl::* -package require xotcl::test +package require next::test ########################################### # testing simple per object mixins @@ -473,8 +473,8 @@ ? {b1 info precedence} "::B ::A ::xotcl::Object" foreach o {A O B a1 b1 o1} {$o destroy} -#foreach o [::xotcl::test::Test info instances] {$o destroy} -#::xotcl::test::Test destroy +#foreach o [::nx::test::Test info instances] {$o destroy} +#::nx::test::Test destroy #puts [lsort [::xotcl::Object allinstances]] namespace import -force ::nx::* Index: tests/parameters.tcl =================================================================== diff -u -r752365e2a4c7ef57fc487bfff9bb387e72ccf533 -r57c47e5fff431976511c200231567024bea09ff4 --- tests/parameters.tcl (.../parameters.tcl) (revision 752365e2a4c7ef57fc487bfff9bb387e72ccf533) +++ tests/parameters.tcl (.../parameters.tcl) (revision 57c47e5fff431976511c200231567024bea09ff4) @@ -1,5 +1,5 @@ package require next -package require xotcl::test +package require next::test namespace import ::nx::* Test case dummy { Index: tests/protected.tcl =================================================================== diff -u -r752365e2a4c7ef57fc487bfff9bb387e72ccf533 -r57c47e5fff431976511c200231567024bea09ff4 --- tests/protected.tcl (.../protected.tcl) (revision 752365e2a4c7ef57fc487bfff9bb387e72ccf533) +++ tests/protected.tcl (.../protected.tcl) (revision 57c47e5fff431976511c200231567024bea09ff4) @@ -1,5 +1,5 @@ package require next -package require xotcl::test +package require next::test namespace import ::nx::* Test parameter count 1 Index: tests/slottest.xotcl =================================================================== diff -u -r3f0573cc75724179f416942b974373e5a62ec05e -r57c47e5fff431976511c200231567024bea09ff4 --- tests/slottest.xotcl (.../slottest.xotcl) (revision 3f0573cc75724179f416942b974373e5a62ec05e) +++ tests/slottest.xotcl (.../slottest.xotcl) (revision 57c47e5fff431976511c200231567024bea09ff4) @@ -1,5 +1,5 @@ package require XOTcl; namespace import ::xotcl::* -package require xotcl::test +package require next::test Test parameter count 1000 Index: tests/speedtest.xotcl =================================================================== diff -u -r3f0573cc75724179f416942b974373e5a62ec05e -r57c47e5fff431976511c200231567024bea09ff4 --- tests/speedtest.xotcl (.../speedtest.xotcl) (revision 3f0573cc75724179f416942b974373e5a62ec05e) +++ tests/speedtest.xotcl (.../speedtest.xotcl) (revision 57c47e5fff431976511c200231567024bea09ff4) @@ -1,7 +1,7 @@ #memory trace on package require XOTcl; namespace import ::xotcl::* -package require xotcl::test +package require next::test Test parameter count 1000 @ @File {description { Index: tests/varresolutiontest.tcl =================================================================== diff -u -r35e0efc0d8851a10c70071c12112b11538ce97af -r57c47e5fff431976511c200231567024bea09ff4 --- tests/varresolutiontest.tcl (.../varresolutiontest.tcl) (revision 35e0efc0d8851a10c70071c12112b11538ce97af) +++ tests/varresolutiontest.tcl (.../varresolutiontest.tcl) (revision 57c47e5fff431976511c200231567024bea09ff4) @@ -1,7 +1,7 @@ # testing var resolution package require next; namespace import ::nx::* -package require xotcl::test +package require next::test Test parameter count 1 Index: tests/xoRDF.test =================================================================== diff -u -r81c800c8b9cb42ef6743d9b80ac2be5ca211a69a -r57c47e5fff431976511c200231567024bea09ff4 --- tests/xoRDF.test (.../xoRDF.test) (revision 81c800c8b9cb42ef6743d9b80ac2be5ca211a69a) +++ tests/xoRDF.test (.../xoRDF.test) (revision 57c47e5fff431976511c200231567024bea09ff4) @@ -3,7 +3,6 @@ package require XOTcl; namespace import -force xotcl::* lappend auto_path [file dir [info script]]/.. -#package require xotcl::test #package require package;package verbose 1 package require xotcl::rdf::parser package require xotcl::rdf::recreatorVisitor Index: tests/xocomm.test =================================================================== diff -u -r81c800c8b9cb42ef6743d9b80ac2be5ca211a69a -r57c47e5fff431976511c200231567024bea09ff4 --- tests/xocomm.test (.../xocomm.test) (revision 81c800c8b9cb42ef6743d9b80ac2be5ca211a69a) +++ tests/xocomm.test (.../xocomm.test) (revision 57c47e5fff431976511c200231567024bea09ff4) @@ -2,7 +2,7 @@ package require XOTcl; namespace import ::xotcl::* lappend auto_path [file dirname [info script]]/.. -package require xotcl::test +package require next::test @ @File { description {