OpenFPGA/libs/EXTERNAL/tcl8.6.12/tests/switch.test

773 lines
22 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Commands covered: switch
#
# This file contains a collection of tests for one or more of the Tcl
# built-in commands. Sourcing this file into Tcl runs the tests and
# generates output for errors. No output means no errors were found.
#
# Copyright (c) 1993 The Regents of the University of California.
# Copyright (c) 1994 Sun Microsystems, Inc.
# Copyright (c) 1998-1999 by Scriptics Corporation.
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
if {"::tcltest" ni [namespace children]} {
package require tcltest 2.5
namespace import -force ::tcltest::*
}
test switch-1.1 {simple patterns} {
switch a a {subst 1} b {subst 2} c {subst 3} default {subst 4}
} 1
test switch-1.2 {simple patterns} {
switch b a {subst 1} b {subst 2} c {subst 3} default {subst 4}
} 2
test switch-1.3 {simple patterns} {
switch x a {subst 1} b {subst 2} c {subst 3} default {subst 4}
} 4
test switch-1.4 {simple patterns} {
switch x a {subst 1} b {subst 2} c {subst 3}
} {}
test switch-1.5 {simple pattern matches many times} {
switch b a {subst 1} b {subst 2} b {subst 3} b {subst 4}
} 2
test switch-1.6 {simple patterns} {
switch default a {subst 1} default {subst 2} c {subst 3} default {subst 4}
} 2
test switch-1.7 {simple patterns} {
switch x a {subst 1} default {subst 2} c {subst 3} default {subst 4}
} 4
test switch-1.8 {simple patterns with -nocase} {
switch -nocase b a {subst 1} b {subst 2} c {subst 3} default {subst 4}
} 2
test switch-1.9 {simple patterns with -nocase} {
switch -nocase B a {subst 1} b {subst 2} c {subst 3} default {subst 4}
} 2
test switch-1.10 {simple patterns with -nocase} {
switch -nocase b a {subst 1} B {subst 2} c {subst 3} default {subst 4}
} 2
test switch-1.11 {simple patterns with -nocase} {
switch -nocase x a {subst 1} default {subst 2} c {subst 3} default {subst 4}
} 4
test switch-2.1 {single-argument form for pattern/command pairs} {
switch b {
a {subst 1}
b {subst 2}
default {subst 6}
}
} {2}
test switch-2.2 {single-argument form for pattern/command pairs} -body {
switch z {a 2 b}
} -returnCodes error -result {extra switch pattern with no body}
test switch-3.1 {-exact vs. -glob vs. -regexp} {
switch -exact aaaab {
^a*b$ {subst regexp}
*b {subst glob}
aaaab {subst exact}
default {subst none}
}
} exact
test switch-3.2 {-exact vs. -glob vs. -regexp} {
switch -regexp aaaab {
^a*b$ {subst regexp}
*b {subst glob}
aaaab {subst exact}
default {subst none}
}
} regexp
test switch-3.3 {-exact vs. -glob vs. -regexp} {
switch -glob aaaab {
^a*b$ {subst regexp}
*b {subst glob}
aaaab {subst exact}
default {subst none}
}
} glob
test switch-3.4 {-exact vs. -glob vs. -regexp} {
switch aaaab {^a*b$} {subst regexp} *b {subst glob} \
aaaab {subst exact} default {subst none}
} exact
test switch-3.5 {-exact vs. -glob vs. -regexp} {
switch -- -glob {
^g.*b$ {subst regexp}
-* {subst glob}
-glob {subst exact}
default {subst none}
}
} exact
test switch-3.6 {-exact vs. -glob vs. -regexp} -body {
switch -foo a b c
} -returnCodes error -result {bad option "-foo": must be -exact, -glob, -indexvar, -matchvar, -nocase, -regexp, or --}
test switch-3.7 {-exact vs. -glob vs. -regexp with -nocase} {
switch -exact -nocase aaaab {
^a*b$ {subst regexp}
*b {subst glob}
aaaab {subst exact}
default {subst none}
}
} exact
test switch-3.8 {-exact vs. -glob vs. -regexp with -nocase} {
switch -regexp -nocase aaaab {
^a*b$ {subst regexp}
*b {subst glob}
aaaab {subst exact}
default {subst none}
}
} regexp
test switch-3.9 {-exact vs. -glob vs. -regexp with -nocase} {
switch -glob -nocase aaaab {
^a*b$ {subst regexp}
*b {subst glob}
aaaab {subst exact}
default {subst none}
}
} glob
test switch-3.10 {-exact vs. -glob vs. -regexp with -nocase} {
switch -nocase aaaab {^a*b$} {subst regexp} *b {subst glob} \
aaaab {subst exact} default {subst none}
} exact
test switch-3.11 {-exact vs. -glob vs. -regexp with -nocase} {
switch -nocase -- -glob {
^g.*b$ {subst regexp}
-* {subst glob}
-glob {subst exact}
default {subst none}
}
} exact
test switch-3.12 {-exact vs. -glob vs. -regexp} {
switch -exa Foo Foo {set result OK}
} OK
test switch-3.13 {-exact vs. -glob vs. -regexp} {
switch -gl Foo Fo? {set result OK}
} OK
test switch-3.14 {-exact vs. -glob vs. -regexp} {
switch -re Foo Fo. {set result OK}
} OK
test switch-3.15 {-exact vs. -glob vs. -regexp} -body {
switch -exact -exact Foo Foo {set result OK}
} -returnCodes error -result {bad option "-exact": -exact option already found}
test switch-3.16 {-exact vs. -glob vs. -regexp} -body {
switch -exact -glob Foo Foo {set result OK}
} -returnCodes error -result {bad option "-glob": -exact option already found}
test switch-3.17 {-exact vs. -glob vs. -regexp} -body {
switch -glob -regexp Foo Foo {set result OK}
} -returnCodes error -result {bad option "-regexp": -glob option already found}
test switch-3.18 {-exact vs. -glob vs. -regexp} -body {
switch -regexp -glob Foo Foo {set result OK}
} -returnCodes error -result {bad option "-glob": -regexp option already found}
test switch-4.1 {error in executed command} {
list [catch {switch a a {error "Just a test"} default {subst 1}} msg] \
$msg $::errorInfo
} {1 {Just a test} {Just a test
while executing
"error "Just a test""
("a" arm line 1)
invoked from within
"switch a a {error "Just a test"} default {subst 1}"}}
test switch-4.2 {error: not enough args} -returnCodes error -body {
switch
} -result {wrong # args: should be "switch ?-option ...? string ?pattern body ...? ?default body?"}
test switch-4.3 {error: pattern with no body} -body {
switch a b
} -returnCodes error -result {extra switch pattern with no body}
test switch-4.4 {error: pattern with no body} -body {
switch a b {subst 1} c
} -returnCodes error -result {extra switch pattern with no body}
test switch-4.5 {error in default command} {
list [catch {switch foo a {error switch1} b {error switch 3} \
default {error switch2}} msg] $msg $::errorInfo
} {1 switch2 {switch2
while executing
"error switch2"
("default" arm line 1)
invoked from within
"switch foo a {error switch1} b {error switch 3} default {error switch2}"}}
test switch-5.1 {errors in -regexp matching} -returnCodes error -body {
switch -regexp aaaab {
*b {subst glob}
aaaab {subst exact}
default {subst none}
}
} -result {couldn't compile regular expression pattern: quantifier operand invalid}
test switch-6.1 {backslashes in patterns} {
switch -exact {\a\$\.\[} {
\a\$\.\[ {subst first}
\a\\$\.\\[ {subst second}
\\a\\$\\.\\[ {subst third}
{\a\\$\.\\[} {subst fourth}
{\\a\\$\\.\\[} {subst fifth}
default {subst none}
}
} third
test switch-6.2 {backslashes in patterns} {
switch -exact {\a\$\.\[} {
\a\$\.\[ {subst first}
{\a\$\.\[} {subst second}
{{\a\$\.\[}} {subst third}
default {subst none}
}
} second
test switch-7.1 {"-" bodies} {
switch a {
a -
b -
c {subst 1}
default {subst 2}
}
} 1
test switch-7.2 {"-" bodies} -body {
switch a {
a -
b -
c -
}
} -returnCodes error -result {no body specified for pattern "c"}
test switch-7.3 {"-" bodies} -body {
switch a {
a -
b -foo
c -
}
} -returnCodes error -result {no body specified for pattern "c"}
test switch-7.4 {"-" bodies} -body {
switch a {
a -
b -foo
c {}
}
} -returnCodes error -result {invalid command name "-foo"}
test switch-8.1 {empty body} {
set msg {}
switch {2} {
1 {set msg 1}
2 {}
default {set msg 2}
}
} {}
proc test_switch_body {} {
return "INVOKED"
}
test switch-8.2 {weird body text, variable} {
set cmd {test_switch_body}
switch Foo {
Foo $cmd
}
} {INVOKED}
test switch-8.3 {weird body text, variable} {
set cmd {test_switch_body}
switch Foo {
Foo {$cmd}
}
} {INVOKED}
test switch-9.1 {empty pattern/body list} -returnCodes error -body {
switch x
} -result {wrong # args: should be "switch ?-option ...? string ?pattern body ...? ?default body?"}
test switch-9.2 {unpaired pattern} -returnCodes error -body {
switch -- x
} -result {extra switch pattern with no body}
test switch-9.3 {empty pattern/body list} -body {
switch x {}
} -returnCodes error -result {wrong # args: should be "switch ?-option ...? string {?pattern body ...? ?default body?}"}
test switch-9.4 {empty pattern/body list} -body {
switch -- x {}
} -returnCodes error -result {wrong # args: should be "switch ?-option ...? string {?pattern body ...? ?default body?}"}
test switch-9.5 {unpaired pattern} -body {
switch x a {} b
} -returnCodes error -result {extra switch pattern with no body}
test switch-9.6 {unpaired pattern} -body {
switch x {a {} b}
} -returnCodes error -result {extra switch pattern with no body}
test switch-9.7 {unpaired pattern} -body {
switch x a {} # comment b
} -returnCodes error -result {extra switch pattern with no body}
test switch-9.8 {unpaired pattern} -returnCodes error -body {
switch x {a {} # comment b}
} -result {extra switch pattern with no body, this may be due to a comment incorrectly placed outside of a switch body - see the "switch" documentation}
test switch-9.9 {unpaired pattern} -body {
switch x a {} x {} # comment b
} -returnCodes error -result {extra switch pattern with no body}
test switch-9.10 {unpaired pattern} -returnCodes error -body {
switch x {a {} x {} # comment b}
} -result {extra switch pattern with no body, this may be due to a comment incorrectly placed outside of a switch body - see the "switch" documentation}
test switch-10.1 {compiled -exact switch} {
if 1 {switch -exact -- a {a {subst 1} b {subst 2}}}
} 1
test switch-10.1a {compiled -exact switch} {
if 1 {switch -exact a {a {subst 1} b {subst 2}}}
} 1
test switch-10.2 {compiled -exact switch} {
if 1 {switch -exact -- b {a {subst 1} b {subst 2}}}
} 2
test switch-10.2a {compiled -exact switch} {
if 1 {switch -exact b {a {subst 1} b {subst 2}}}
} 2
test switch-10.3 {compiled -exact switch} {
if 1 {switch -exact -- c {a {subst 1} b {subst 2}}}
} {}
test switch-10.3a {compiled -exact switch} {
if 1 {switch -exact c {a {subst 1} b {subst 2}}}
} {}
test switch-10.4 {compiled -exact switch} {
if 1 {
set x 0
switch -exact -- c {a {subst 1} b {subst 2}}
}
} {}
test switch-10.5 {compiled -exact switch} {
if 1 {switch -exact -- a {a - aa {subst 1} b {subst 2}}}
} 1
test switch-10.6 {compiled -exact switch} {
if 1 {switch -exact -- b {a {
set x 1;set x 1;set x 1;set x 1;set x 1;set x 1;set x 1;set x 1
set x 1;set x 1;set x 1;set x 1;set x 1;set x 1;set x 1;set x 1
set x 1;set x 1;set x 1;set x 1;set x 1;set x 1;set x 1;set x 1
set x 1;set x 1;set x 1;set x 1;set x 1;set x 1;set x 1;set x 1
set x 1;set x 1;set x 1;set x 1;set x 1;set x 1;set x 1;set x 1
set x 1;set x 1;set x 1;set x 1;set x 1;set x 1;set x 1;set x 1
set x 1;set x 1;set x 1;set x 1;set x 1;set x 1;set x 1;set x 1
set x 1;set x 1;set x 1;set x 1;set x 1;set x 1;set x 1;set x 1
} b {subst 2}}}
} 2
# Command variants are:
# c* are compiled switches, i* are interpreted
# *-glob use glob matching, *-exact use exact matching
# *2* include a default clause (different results too.)
proc cswtest-glob s {
set x 0; set y 0
foreach c [split $s {}] {
switch -glob $c {
a {incr x}
b {incr y}
}
}
set x [expr {$x*100}]; set y [expr {$y*100}]
foreach c [split $s {}] {
switch -glob -- $c a {incr x} b {incr y}
}
return $x,$y
}
proc iswtest-glob s {
set x 0; set y 0; set switch switch
foreach c [split $s {}] {
$switch -glob $c {
a {incr x}
b {incr y}
}
}
set x [expr {$x*100}]; set y [expr {$y*100}]
foreach c [split $s {}] {
$switch -glob -- $c a {incr x} b {incr y}
}
return $x,$y
}
proc cswtest-exact s {
set x 0; set y 0
foreach c [split $s {}] {
switch -exact $c {
a {incr x}
b {incr y}
}
}
set x [expr {$x*100}]; set y [expr {$y*100}]
foreach c [split $s {}] {
switch -exact -- $c a {incr x} b {incr y}
}
return $x,$y
}
proc iswtest-exact s {
set x 0; set y 0; set switch switch
foreach c [split $s {}] {
$switch -exact $c {
a {incr x}
b {incr y}
}
}
set x [expr {$x*100}]; set y [expr {$y*100}]
foreach c [split $s {}] {
$switch -exact -- $c a {incr x} b {incr y}
}
return $x,$y
}
proc cswtest2-glob s {
set x 0; set y 0; set z 0
foreach c [split $s {}] {
switch -glob $c {
a {incr x}
b {incr y}
default {incr z}
}
}
set x [expr {$x*100}]; set y [expr {$y*100}]; set z [expr {$z*100}]
foreach c [split $s {}] {
switch -glob -- $c a {incr x} b {incr y} default {incr z}
}
return $x,$y,$z
}
proc iswtest2-glob s {
set x 0; set y 0; set z 0; set switch switch
foreach c [split $s {}] {
$switch -glob $c {
a {incr x}
b {incr y}
default {incr z}
}
}
set x [expr {$x*100}]; set y [expr {$y*100}]; set z [expr {$z*100}]
foreach c [split $s {}] {
$switch -glob -- $c a {incr x} b {incr y} default {incr z}
}
return $x,$y,$z
}
proc cswtest2-exact s {
set x 0; set y 0; set z 0
foreach c [split $s {}] {
switch -exact $c {
a {incr x}
b {incr y}
default {incr z}
}
}
set x [expr {$x*100}]; set y [expr {$y*100}]; set z [expr {$z*100}]
foreach c [split $s {}] {
switch -exact -- $c a {incr x} b {incr y} default {incr z}
}
return $x,$y,$z
}
proc iswtest2-exact s {
set x 0; set y 0; set z 0; set switch switch
foreach c [split $s {}] {
$switch -exact $c {
a {incr x}
b {incr y}
default {incr z}
}
}
set x [expr {$x*100}]; set y [expr {$y*100}]; set z [expr {$z*100}]
foreach c [split $s {}] {
$switch -exact -- $c a {incr x} b {incr y} default {incr z}
}
return $x,$y,$z
}
test switch-10.7 {comparison of compiled and interpreted behaviour of switch, exact matching} {
cswtest-exact abcb
} [iswtest-exact abcb]
test switch-10.8 {comparison of compiled and interpreted behaviour of switch, glob matching} {
cswtest-glob abcb
} [iswtest-glob abcb]
test switch-10.9 {comparison of compiled and interpreted behaviour of switch, exact matching with default} {
cswtest2-exact abcb
} [iswtest2-exact abcb]
test switch-10.10 {comparison of compiled and interpreted behaviour of switch, glob matching with default} {
cswtest2-glob abcb
} [iswtest2-glob abcb]
proc cswtest-default-exact {x} {
switch -- $x {
a* {return b}
aa {return c}
default {return d}
}
}
test switch-10.11 {default to exact matching when compiled} {
cswtest-default-exact a
} d
test switch-10.12 {default to exact matching when compiled} {
cswtest-default-exact aa
} c
test switch-10.13 {default to exact matching when compiled} {
cswtest-default-exact a*
} b
test switch-10.14 {default to exact matching when compiled} {
cswtest-default-exact a**
} d
rename cswtest-default-exact {}
rename cswtest-glob {}
rename iswtest-glob {}
rename cswtest2-glob {}
rename iswtest2-glob {}
rename cswtest-exact {}
rename iswtest-exact {}
rename cswtest2-exact {}
rename iswtest2-exact {}
# Bug 1891827
test switch-10.15 {(not) compiled exact nocase regression} {
apply {{} {
switch -nocase -- A { a {return yes} default {return no} }
}}
} yes
# Added due to TIP#75
test switch-11.1 {regexp matching with -matchvar} {
switch -regexp -matchvar x -- abc {.(.). {set x}}
} {abc b}
test switch-11.2 {regexp matching with -matchvar} {
set x GOOD
switch -regexp -matchvar x -- abc {.(.).. {list $x z}}
set x
} GOOD
test switch-11.3 {regexp matching with -matchvar} {
switch -regexp -matchvar x -- "a b c" {.(.). {set x}}
} {{a b} { }}
test switch-11.4 {regexp matching with -matchvar} {
set x BAD
switch -regexp -matchvar x -- "a b c" {
bc {list $x YES}
default {list $x NO}
}
} {{} NO}
test switch-11.5 {-matchvar without -regexp} {
set x {}
list [catch {switch -glob -matchvar x -- abc . {set x}} msg] $x $msg
} {1 {} {-matchvar option requires -regexp option}}
test switch-11.6 {-matchvar unwritable} {
set x {}
list [catch {switch -regexp -matchvar x(x) -- abc . {set x}} msg] $x $msg
} {1 {} {can't set "x(x)": variable isn't array}}
test switch-12.1 {regexp matching with -indexvar} {
switch -regexp -indexvar x -- abc {.(.). {set x}}
} {{0 2} {1 1}}
test switch-12.2 {regexp matching with -indexvar} {
set x GOOD
switch -regexp -indexvar x -- abc {.(.).. {list $x z}}
set x
} GOOD
test switch-12.3 {regexp matching with -indexvar} {
switch -regexp -indexvar x -- "a b c" {.(.). {set x}}
} {{0 2} {1 1}}
test switch-12.4 {regexp matching with -indexvar} {
set x BAD
switch -regexp -indexvar x -- "a b c" {
bc {list $x YES}
default {list $x NO}
}
} {{} NO}
test switch-12.5 {-indexvar without -regexp} {
set x {}
list [catch {switch -glob -indexvar x -- abc . {set x}} msg] $x $msg
} {1 {} {-indexvar option requires -regexp option}}
test switch-12.6 {-indexvar unwritable} {
set x {}
list [catch {switch -regexp -indexvar x(x) -- abc . {set x}} msg] $x $msg
} {1 {} {can't set "x(x)": variable isn't array}}
test switch-12.7 {[Bug 3106532] -indexvar should be directly usable with [string range]} {
set str abcdef
switch -regexp -indexvar x -- $str ^... {string range $str {*}[lindex $x 0]}
} abc
test switch-12.8 {-indexvar and matched empty strings} {
switch -regexp -indexvar x -- abcdef ^...(x?) {return $x}
} {{0 2} {3 2}}
test switch-12.9 {-indexvar and unmatched strings} {
switch -regexp -indexvar x -- abcdef ^...(x)? {return $x}
} {{0 2} {-1 -1}}
test switch-13.1 {-indexvar -matchvar combinations} {
switch -regexp -indexvar x -matchvar y abc {
. {list $x $y}
}
} {{{0 0}} a}
test switch-13.2 {-indexvar -matchvar combinations} {
switch -regexp -indexvar x -matchvar y abc {
.$ {list $x $y}
}
} {{{2 2}} c}
test switch-13.3 {-indexvar -matchvar combinations} {
switch -regexp -indexvar x -matchvar y abc {
(.)(.)(.) {list $x $y}
}
} {{{0 2} {0 0} {1 1} {2 2}} {abc a b c}}
test switch-13.4 {-indexvar -matchvar combinations} {
set x -
set y -
switch -regexp -indexvar x -matchvar y abc {
(.)(.)(.). -
default {list $x $y}
}
} {{} {}}
test switch-13.5 {-indexvar -matchvar combinations} {
set x -
set y -
list [catch {
switch -regexp -indexvar x(x) -matchvar y abc {. {list $x $y}}
} msg] $x $y $msg
} {1 - - {can't set "x(x)": variable isn't array}}
test switch-13.6 {-indexvar -matchvar combinations} {
set x -
set y -
list [catch {
switch -regexp -indexvar x -matchvar y(y) abc {. {list $x $y}}
} msg] $x $y $msg
} {1 {{0 0}} - {can't set "y(y)": variable isn't array}}
test switch-14.1 {-regexp -- compilation [Bug 1854399]} {
switch -regexp -- 0 {
{[0-9]+} {return yes}
default {return no}
}
foo
} yes
test switch-14.2 {-regexp -- compilation [Bug 1854399]} {
proc foo {} {
switch -regexp -- 0 {
{[0-9]+} {return yes}
default {return no}
}
}
foo
} yes
test switch-14.3 {-regexp -- compilation [Bug 1854399]} {
proc foo {} {
switch -regexp -- 0 {
{\d+} {return yes}
default {return no}
}
}
foo
} yes
test switch-14.4 {-regexp -- compilation [Bug 1854399]} {
proc foo {} {
switch -regexp -- 0 {
{0} {return yes}
default {return no}
}
}
foo
} yes
test switch-14.5 {switch -regexp compilation} {
apply {{} {
switch -regexp -- 0 {
{0|1|2} {return yes}
default {return no}
}
}}
} yes
test switch-14.6 {switch -regexp compilation} {
apply {{} {
switch -regexp -- 0 {
{0|11|222} {return yes}
default {return no}
}
}}
} yes
test switch-14.7 {switch -regexp compilation} {
apply {{} {
switch -regexp -- 0 {
{[012]} {return yes}
default {return no}
}
}}
} yes
test switch-14.8 {switch -regexp compilation} {
apply {{} {
switch -regexp -- x {
{0|1|2} {return yes}
default {return no}
}
}}
} no
test switch-14.9 {switch -regexp compilation} {
apply {{} {
switch -regexp -- x {
{0|11|222} {return yes}
default {return no}
}
}}
} no
test switch-14.10 {switch -regexp compilation} {
apply {{} {
switch -regexp -- x {
{[012]} {return yes}
default {return no}
}
}}
} no
test switch-14.11 {switch -regexp compilation} {
apply {{} {
switch -regexp -- x {
{0|1|2} {return yes}
.+ {return yes2}
default {return no}
}
}}
} yes2
test switch-14.12 {switch -regexp compilation} {
apply {{} {
switch -regexp -- x {
{0|11|222} {return yes}
.+ {return yes2}
default {return no}
}
}}
} yes2
test switch-14.13 {switch -regexp compilation} {
apply {{} {
switch -regexp -- x {
{[012]} {return yes}
.+ {return yes2}
default {return no}
}
}}
} yes2
test switch-14.14 {switch -regexp compilation} {
apply {{} {
switch -regexp -- {} {
{0|1|2} {return yes}
.+ {return yes2}
default {return no}
}
}}
} no
test switch-14.15 {switch -regexp compilation} {
apply {{} {
switch -regexp -- {} {
{0|11|222} {return yes}
.+ {return yes2}
default {return no}
}
}}
} no
test switch-14.16 {switch -regexp compilation} {
apply {{} {
switch -regexp -- {} {
{[012]} {return yes}
.+ {return yes2}
default {return no}
}
}}
} no
test switch-15.1 {coroutine safety of non-bytecoded switch} {*}{
-body {
proc coro {} {
switch -glob a {
a {yield ok1}
}
return ok2
}
list [coroutine c coro] [c]
}
-result {ok1 ok2}
-cleanup {
rename coro {}
}
}
# cleanup
catch {rename foo {}}
::tcltest::cleanupTests
return
# Local Variables:
# mode: tcl
# End: