nx-test.tcl

Clone Tools
  • last updated 22 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
* nx-test.tcl (run): Avoid use of [try], to render the test suite independent from the presence of 8.6 or tcllib's try. This may be reverted, once 8.5 support is dropped.

fix duplicated words in code documentation

  1. … 2 more files in changeset.
nx-test.tcl (exit): Fix the return trampoline for [exit] during test runs

Make test suite working under 8.5, again.

  1. … 8 more files in changeset.
- make it possible to use error code for cmd result comparison - add some NSF specifc error code

  1. … 3 more files in changeset.
nx-test.tcl (nx::test case): As (ensemble) methods are currently not covered by the auto-cleanup feature of "nx::test case", I took care of not cleaning up the per-class ensemble slots while the alias is still available. This led to dangling aliases in cases such as:

package req nx::test

nx::Class create ::A

nx::test case tmp {

::A public method "oo ps" {} {;}; # creates ::A::slot::__oo plus alias pointing to it.

}

A create a

a oo ps; # "target "::A::slot::__oo" of alias oo apparently disappeared"

Along the way, modernized nx::test case a little (apply).

- allow to configure verbosity in test sets

- omit warnings, when value of "expected" looks like a non-positional parameter

- don't delete system slot ::xotcl::Attribute on cleanup

- show info line for every test case

- add flag "-onerror" to nsf::forward::method to handle errors during dispatch of a forwarder (not all error messags of forwarder are already transformed) - added log-level Info which prints always, e.g. for "-verbose" flag of forwarder - drop setter-rule from properties (use always forwarder) - drop "/obj/ /prop/" and "/obj/ /prop/ /value/" in favor of "/obj/ /prop/ get" and "/obj/ /prop/ assign /value/" to achieve better orthogonality with e.g. incremental properties

  1. … 16 more files in changeset.
nsf.c: - change name of enumeratorConverterEntry to Nsf_EnumeratorConverterEntry, move it with NSF_ARG_* flags to tcl.h to make it available in derived modules using the converter - Added editor hints for a more uniform appearance

  1. … 44 more files in changeset.
nx::test: - use the standard configure interface for configuring instead of own version - changed from nx::Test to nx::test (user never has to know that nx::Test is a class).

nx::test: - deactivate calling overhead calculation, since this is not reliable (sometimes larger than the call).

  1. … 1 more file in changeset.
- nx::test: show msg at start of test file

Method and configure parameter reform, Part 3: - added

/cls/ info lookup variables -> list of handles

/obj/ info lookup object variables -> list of handles

/obj/ info variable definition|name|parameter /handle/

- nx.tcl: added forward compatible scripted implementation of "lmap"

- nsf.c: handle names for private slots in pattern provided to AddSlotObjects(),

used e.g. in "info lookup slots /pattern/"

  1. … 7 more files in changeset.
Object-method Reform: - changed interface to object specific commands by requiring an ensemble named "object". The rational behind is essentially to use always the same info command to retrieve object specific methods, no matter whether these are defined on a plain object or an a class object (does not break the "contract" what e.g. "info method" returns).

Now we define methods via:

/cls/ method foo {args} {...body...}

/cls/ object method foo {args} {...body...}

/obj/ object method foo {args} {...body...}

Similarly, aliases, forwards and mixins are defined, e.g.

/cls/ mixin add ...

/cls/ object mixin add ...

/obj/ object mixin add ...

/obj/ require object method ...

The same change propagated as well to the "info" method.

Now we have:

/cls/ info methods ...

/cls/ info object methods ...

/obj/ info object methods ...

Similar, the object parametererization uses

/cls/ create obj -object-mixin M

/cls/ create obj -object-filter f

/metacls/ create cls -mixin M1 -object-mixin M2

/metacls/ create cls -filter f1 -object-filter f2

- as a consequence,

a) "/cls/ class method ...",

"/cls/ class alias ...",

"/cls/ class forward ...",

"/cls/ class filter ...",

"/cls/ class mixin ...",

"/cls/ class info ..."

"/obj/ class method require method ..."

"/obj/ class method require public method ..."

"/obj/ class method require protected method ..."

"/obj/ class method require private method ..."

were dropped

b) "/obj/ method ....",

"/obj/ alias ....",

"/obj/ forward ...."

"/obj/ filter ...."

"/obj/ mixin ...."

"/obj/ info method*"

"/cls/ create obj -mixin M"

"/cls/ create obj -filter f"

"/obj/ method require method ..."

"/obj/ method require public method ..."

"/obj/ method require protected method ..."

"/obj/ method require private method ..."

were dropped

- added package nx::class to allow optionally the "class" notation

"/cls/ class method ..." (and friends, see (a)), and

"/cls/ class info ...

- added package nx::plain-object-method to allow optionally plain method

b) "/obj/ method ...." (and friends, see (b))

- add support to slots to use ensemble methods as setters

  1. … 43 more files in changeset.
- renamed timing variable from "time" to "ms"

  1. … 1 more file in changeset.
- added timing statistics

  1. … 1 more file in changeset.
Property reform part 1:

- disallow protection modifiers for "properties" and

add new flag "-accessor" to "property" and "variable"

This changes definitions like

Class create C {

:property {a a1}

:public property {b b1}

:protected property {c c1}

:private property {d d1}

}

to

Class create C {

:property {a a1}

:property -accessor public {b b1}

:property -accessor protected {c c1}

:property -accessor private {d d1}

}

since "properties" are always public accessible

over the "configure" and "cget" interface, but the

accessors methods might not be public. The value of

the accessor might be also "none" (specifying explicitely

that no accessor is wanted) or "", which means: use the default.

Same holds for "variable"

- disallow parameter option "incremental" and change it to a flag

of the property or variable. The motivation for this is due to

the fact, that "incremental" is a property of the accessor, and

not of the value.

old:

Class create C {

:property foo:int,incremental

:variable bar:int,incremental

}

new:

Class create C {

:property -incremental foo:int

:variable -incremental bar:int

}

- disallow "public class property" and friends since these are not needed

- removed parameter property "noaccessor"

- removed "nx::configure defaultPropertyCallProtection" and

method hook "__default_property_call_protection"

- introduced "nx::configure defaultAccessor" and

method hook "__default_accessor"

- for the time being, "defaultAccessor" is "public" for NX and XOTcl,

will be changed to "none" in NX

- extended regression test (new file properties.test)

  1. … 16 more files in changeset.
nx::test: - added summary at the end of "make test" via log file - updated .gitignore

  1. … 4 more files in changeset.
- restructured directories, added configure options, some more cleanup

  1. … 16 more files in changeset.
- nx based c code generator for experimenting with different code engines

  1. … 7 more files in changeset.
- remove currently unsupported and untested .xotcl files, also c-extensions of the old binary interface. Some of these package might come back later with tests for nx or xotcl.

  1. … 129 more files in changeset.