winPipe.test
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:17k
源码类别:

通讯编程

开发平台:

Visual C++

  1. # winPipe.test --
  2. #
  3. # This file contains a collection of tests for tclWinPipe.c
  4. #
  5. # Sourcing this file into Tcl runs the tests and generates output for 
  6. # errors.  No output means no errors were found.
  7. #
  8. # Copyright (c) 1996 Sun Microsystems, Inc.
  9. # Copyright (c) 1998-1999 by Scriptics Corporation.
  10. #
  11. # See the file "license.terms" for information on usage and redistribution
  12. # of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  13. #
  14. # RCS: @(#) $Id: winPipe.test,v 1.22.2.4 2005/04/20 00:14:54 hobbs Exp $
  15. package require tcltest
  16. namespace import -force ::tcltest::*
  17. unset -nocomplain path
  18. testConstraint exec [llength [info commands exec]]
  19. set bindir [file join [pwd] [file dirname [info nameofexecutable]]]
  20. set cat32 [file join $bindir cat32.exe]
  21. set ::tcltest::testConstraints(cat32) [file exists $cat32]
  22. if {[catch {puts console1 ""}]} {
  23.     set ::tcltest::testConstraints(AllocConsole) 1
  24. } else {
  25.     set ::tcltest::testConstraints(.console) 1
  26. }
  27. set big bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbn
  28. append big $big
  29. append big $big
  30. append big $big
  31. append big $big
  32. append big $big
  33. append big $big
  34. set path(little) [makeFile {} little]
  35. set f [open $path(little) w] 
  36. puts -nonewline $f "little"
  37. close $f
  38. set path(big) [makeFile {} big]
  39. set f [open $path(big) w]
  40. puts -nonewline $f $big
  41. close $f
  42. proc contents {file} {
  43.     set f [open $file r]
  44.     set r [read $f]
  45.     close $f
  46.     set r
  47. }
  48. set path(more) [makeFile {
  49.     while {[eof stdin] == 0} {
  50. puts -nonewline [read stdin]
  51.     }
  52. } more]
  53. set path(stdout) [makeFile {} stdout]
  54. set path(stderr) [makeFile {} stderr]
  55. test winpipe-1.1 {32 bit comprehensive tests: from little file} {pcOnly exec cat32} {
  56.     exec $cat32 < $path(little) > $path(stdout) 2> $path(stderr)
  57.     list [contents $path(stdout)] [contents $path(stderr)]
  58. } {little stderr32}
  59. test winpipe-1.2 {32 bit comprehensive tests: from big file} {pcOnly exec cat32} {
  60.     exec $cat32 < $path(big) > $path(stdout) 2> $path(stderr)
  61.     list [contents $path(stdout)] [contents $path(stderr)]
  62. } "{$big} stderr32"
  63. test winpipe-1.3 {32 bit comprehensive tests: a little from pipe} {pcOnly nt exec cat32} {
  64.     exec [interpreter] more < little | $cat32 > $path(stdout) 2> $path(stderr)
  65.     list [contents $path(stdout)] [contents $path(stderr)]
  66. } {little stderr32}
  67. test winpipe-1.4 {32 bit comprehensive tests: a lot from pipe} {pcOnly nt exec cat32} {
  68.     exec [interpreter] more < big | $cat32 > $path(stdout) 2> $path(stderr)
  69.     list [contents $path(stdout)] [contents $path(stderr)]
  70. } "{$big} stderr32"
  71. test winpipe-1.5 {32 bit comprehensive tests: a lot from pipe} {pcOnly 95 exec cat32} {
  72.     exec command /c type big |& $cat32 > $path(stdout) 2> $path(stderr)
  73.     list [contents $path(stdout)] [contents $path(stderr)]
  74. } "{$big} stderr32"
  75. test winpipe-1.6 {32 bit comprehensive tests: from console} 
  76. {pcOnly cat32 AllocConsole} {
  77.     # would block waiting for human input
  78. } {}
  79. test winpipe-1.7 {32 bit comprehensive tests: from NUL} {pcOnly exec cat32} {
  80.     exec $cat32 < nul > $path(stdout) 2> $path(stderr)
  81.     list [contents $path(stdout)] [contents $path(stderr)]
  82. } {{} stderr32}
  83. test winpipe-1.8 {32 bit comprehensive tests: from socket} {pcOnly cat32} {
  84.     # doesn't work
  85. } {}
  86. test winpipe-1.9 {32 bit comprehensive tests: from nowhere} 
  87. {pcOnly exec cat32 .console} {
  88.     exec $cat32 > $path(stdout) 2> $path(stderr)
  89.     list [contents $path(stdout)] [contents $path(stderr)]
  90. } {{} stderr32}
  91. test winpipe-1.10 {32 bit comprehensive tests: from file handle} 
  92. {pcOnly exec cat32} {
  93.     set f [open $path(little) r]
  94.     exec $cat32 <@$f > $path(stdout) 2> $path(stderr)
  95.     close $f
  96.     list [contents $path(stdout)] [contents $path(stderr)]
  97. } {little stderr32}
  98. test winpipe-1.11 {32 bit comprehensive tests: read from application} 
  99. {pcOnly exec cat32} {
  100.     set f [open "|[list $cat32] < $path(little)" r]
  101.     gets $f line
  102.     catch {close $f} msg
  103.     list $line $msg
  104. } {little stderr32}
  105. test winpipe-1.12 {32 bit comprehensive tests: a little to file} 
  106. {pcOnly exec cat32} {
  107.     exec $cat32 < $path(little) > $path(stdout) 2> $path(stderr)
  108.     list [contents $path(stdout)] [contents $path(stderr)]
  109. } {little stderr32}
  110. test winpipe-1.13 {32 bit comprehensive tests: a lot to file} 
  111. {pcOnly exec cat32} {
  112.     exec $cat32 < $path(big) > $path(stdout) 2> $path(stderr)
  113.     list [contents $path(stdout)] [contents $path(stderr)]
  114. } "{$big} stderr32"
  115. test winpipe-1.14 {32 bit comprehensive tests: a little to pipe} 
  116. {pcOnly exec stdio cat32} {
  117.     exec $cat32 < $path(little) | [interpreter] $path(more) > $path(stdout) 2> $path(stderr)
  118.     list [contents $path(stdout)] [contents $path(stderr)]
  119. } {little stderr32}
  120. test winpipe-1.15 {32 bit comprehensive tests: a lot to pipe} 
  121. {pcOnly exec stdio cat32} {
  122.     exec $cat32 < $path(big) | [interpreter] $path(more) > $path(stdout) 2> $path(stderr)
  123.     list [contents $path(stdout)] [contents $path(stderr)]
  124. } "{$big} stderr32"
  125. test winpipe-1.16 {32 bit comprehensive tests: to console} {pcOnly exec cat32} {
  126.     catch {exec $cat32 << "You should see thisn" >@stdout} msg
  127.     set msg
  128. } stderr32
  129. test winpipe-1.17 {32 bit comprehensive tests: to NUL} {pcOnly exec cat32} {
  130.     # some apps hang when sending a large amount to NUL.  $cat32 isn't one.
  131.     catch {exec $cat32 < $path(big) > nul} msg
  132.     set msg
  133. } stderr32
  134. test winpipe-1.18 {32 bit comprehensive tests: to nowhere} 
  135. {pcOnly exec cat32 .console} {
  136.     exec $cat32 < $path(big) >&@stdout 
  137. } {}
  138. test winpipe-1.19 {32 bit comprehensive tests: to file handle} {pcOnly exec cat32} {
  139.     set f1 [open $path(stdout) w]
  140.     set f2 [open $path(stderr) w]
  141.     exec $cat32 < $path(little) >@$f1 2>@$f2
  142.     close $f1
  143.     close $f2
  144.     list [contents $path(stdout)] [contents $path(stderr)]
  145. } {little stderr32}
  146. test winpipe-1.20 {32 bit comprehensive tests: write to application} 
  147. {pcOnly exec cat32} {
  148.     set f [open |[list $cat32 >$path(stdout)] w]
  149.     puts -nonewline $f "foo"
  150.     catch {close $f} msg
  151.     list [contents $path(stdout)] $msg
  152. } {foo stderr32}
  153. test winpipe-1.21 {32 bit comprehensive tests: read/write application} 
  154. {pcOnly exec cat32} {
  155.     set f [open "|[list $cat32]" r+]
  156.     puts $f $big
  157.     puts $f 32
  158.     flush $f
  159.     set r [read $f 64]
  160.     catch {close $f}
  161.     set r
  162. } "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
  163. test winpipe-1.22 {Checking command.com for Win95/98 hanging} {pcOnly 95 exec} {
  164.     exec command.com /c dir /b
  165.     set result 1
  166. } 1
  167. file delete more
  168. test winpipe-4.1 {Tcl_WaitPid} {pcOnly nt exec cat32} {
  169.     proc readResults {f} {
  170. global x result
  171. if { [eof $f] } {
  172.     close $f
  173.     set x 1
  174. } else {
  175.     set line [read $f ]
  176.     set result "$result$line"
  177. }
  178.     }
  179.     set f [open "|[list $cat32] < big 2> $path(stderr)" r]
  180.     fconfigure $f  -buffering none -blocking 0
  181.     fileevent $f readable "readResults $f"
  182.     set x 0
  183.     set result ""
  184.     vwait x
  185.     list $result $x [contents $path(stderr)]
  186. } "{$big} 1 stderr32"
  187. test winpipe-4.2 {Tcl_WaitPid: return of exception codes, SIGFPE} {pcOnly exec} {
  188.     set f [open "|[tcltest::interpreter]" w+]
  189.     set pid [pid $f]
  190.     puts $f "testexcept float_underflow"
  191.     set status [catch {close $f}]
  192.     list $status [expr {$pid == [lindex $::errorCode 1]}] [lindex $::errorCode 2]
  193. } {1 1 SIGFPE}
  194. test winpipe-4.3 {Tcl_WaitPid: return of exception codes, SIGSEGV} {pcOnly exec} {
  195.     set f [open "|[tcltest::interpreter]" w+]
  196.     set pid [pid $f]
  197.     puts $f "testexcept access_violation"
  198.     set status [catch {close $f}]
  199.     list $status [expr {$pid == [lindex $::errorCode 1]}] [lindex $::errorCode 2]
  200. } {1 1 SIGSEGV}
  201. test winpipe-4.4 {Tcl_WaitPid: return of exception codes, SIGILL} {pcOnly exec} {
  202.     set f [open "|[tcltest::interpreter]" w+]
  203.     set pid [pid $f]
  204.     puts $f "testexcept illegal_instruction"
  205.     set status [catch {close $f}]
  206.     list $status [expr {$pid == [lindex $::errorCode 1]}] [lindex $::errorCode 2]
  207. } {1 1 SIGILL}
  208. test winpipe-4.5 {Tcl_WaitPid: return of exception codes, SIGINT} {pcOnly exec} {
  209.     set f [open "|[tcltest::interpreter]" w+]
  210.     set pid [pid $f]
  211.     puts $f "testexcept ctrl+c"
  212.     set status [catch {close $f}]
  213.     list $status [expr {$pid == [lindex $::errorCode 1]}] [lindex $::errorCode 2]
  214. } {1 1 SIGINT}
  215. set path(nothing) [makeFile {} nothing]
  216. close [open $path(nothing) w]
  217. catch {set env_tmp $env(TMP)}
  218. catch {set env_temp $env(TEMP)}
  219. set env(TMP) c:/
  220. set env(TEMP) c:/
  221. test winpipe-5.1 {TclpCreateTempFile: cleanup temp files} {pcOnly exec} {
  222.     set x {}
  223.     set existing [glob -nocomplain c:/tcl*.tmp]
  224.     exec [interpreter] < nothing 
  225.     foreach p [glob -nocomplain c:/tcl*.tmp] {
  226. if {[lsearch $existing $p] == -1} {
  227.     lappend x $p
  228. }
  229.     }
  230.     set x
  231. } {}
  232. test winpipe-5.2 {TclpCreateTempFile: TMP and TEMP not defined} {pcOnly exec} {
  233.     set tmp $env(TMP)
  234.     set temp $env(TEMP)
  235.     unset env(TMP)
  236.     unset env(TEMP)
  237.     exec [interpreter] < nothing
  238.     set env(TMP) $tmp
  239.     set env(TEMP) $temp
  240.     set x {}
  241. } {}
  242. test winpipe-5.3 {TclpCreateTempFile: TMP specifies non-existent directory} 
  243. {pcOnly exec } {
  244.     set tmp $env(TMP)
  245.     set env(TMP) snarky
  246.     exec [interpreter] < nothing
  247.     set env(TMP) $tmp
  248.     set x {}
  249. } {}
  250. test winpipe-5.4 {TclpCreateTempFile: TEMP specifies non-existent directory} 
  251. {pcOnly exec} {
  252.     set tmp $env(TMP)
  253.     set temp $env(TEMP)
  254.     unset env(TMP)
  255.     set env(TEMP) snarky
  256.     exec [interpreter] < nothing
  257.     set env(TMP) $tmp
  258.     set env(TEMP) $temp
  259.     set x {}
  260. } {}
  261. test winpipe-6.1 {PipeSetupProc & PipeCheckProc: read threads} 
  262. {pcOnly exec cat32} {
  263.     set f [open "|[list $cat32]" r+]
  264.     fconfigure $f -blocking 0
  265.     fileevent $f writable { set x writable }
  266.     set x {}
  267.     vwait x
  268.     fileevent $f writable {}
  269.     fileevent $f readable { lappend x readable }
  270.     after 100 { lappend x timeout }
  271.     vwait x
  272.     puts $f foobar
  273.     flush $f
  274.     vwait x
  275.     lappend x [read $f]
  276.     after 100 { lappend x timeout }
  277.     vwait x
  278.     fconfigure $f -blocking 1
  279.     lappend x [catch {close $f} msg] $msg
  280. } {writable timeout readable {foobar
  281. } timeout 1 stderr32}
  282. test winpipe-6.2 {PipeSetupProc & PipeCheckProc: write threads} 
  283. {pcOnly exec cat32} {
  284.     set f [open "|[list $cat32]" r+]
  285.     fconfigure $f -blocking 0
  286.     fileevent $f writable { set x writable }
  287.     set x {}
  288.     vwait x
  289.     puts -nonewline $f $big$big$big$big
  290.     flush $f
  291.     after 100 { lappend x timeout }
  292.     vwait x
  293.     lappend x [catch {close $f} msg] $msg
  294. } {writable timeout 0 {}}
  295. set path(echoArgs.tcl) [makeFile {
  296.     puts "[list $argv0 $argv]"
  297. } echoArgs.tcl]
  298. ### validate the raw output of BuildCommandLine().
  299. ###
  300. test winpipe-7.1 {BuildCommandLine: null arguments} {pcOnly exec} {
  301.     exec $env(COMSPEC) /c echo foo "" bar
  302. } {foo "" bar}
  303. test winpipe-7.2 {BuildCommandLine: null arguments} {pcOnly exec} {
  304.     exec $env(COMSPEC) /c echo foo {} bar
  305. } {foo "" bar}
  306. test winpipe-7.3 {BuildCommandLine: dbl quote quoting #1} {pcOnly exec} {
  307.     exec $env(COMSPEC) /c echo foo {"} bar
  308. } {foo " bar}
  309. test winpipe-7.4 {BuildCommandLine: dbl quote quoting #2} {pcOnly exec} {
  310.     exec $env(COMSPEC) /c echo foo {""} bar
  311. } {foo "" bar}
  312. test winpipe-7.5 {BuildCommandLine: dbl quote quoting #3} {pcOnly exec} {
  313.     exec $env(COMSPEC) /c echo foo {" } bar
  314. } {foo "" " bar}
  315. test winpipe-7.6 {BuildCommandLine: dbl quote quoting #4} {pcOnly exec} {
  316.     exec $env(COMSPEC) /c echo foo {a="b"} bar
  317. } {foo a="b" bar}
  318. test winpipe-7.7 {BuildCommandLine: dbl quote quoting #5} {pcOnly exec} {
  319.     exec $env(COMSPEC) /c echo foo {a = "b"} bar
  320. } {foo "a = "b"" bar}
  321. test winpipe-7.8 {BuildCommandLine: dbl quote quoting #6} {pcOnly exec} {
  322.     exec $env(COMSPEC) /c echo {"hello"} {""hello""} {"""hello"""} {""hello""} {he llo} {he " llo}
  323. } {"hello" ""hello"" """hello""" "\"hello\"" "he llo" "he " llo"}
  324. test winpipe-7.9 {BuildCommandLine: N backslashes followed a quote rule #1} {pcOnly exec} {
  325.     exec $env(COMSPEC) /c echo foo \ bar
  326. } {foo  bar}
  327. test winpipe-7.10 {BuildCommandLine: N backslashes followed a quote rule #2} {pcOnly exec} {
  328.     exec $env(COMSPEC) /c echo foo \\ bar
  329. } {foo \ bar}
  330. test winpipe-7.11 {BuildCommandLine: N backslashes followed a quote rule #3} {pcOnly exec} {
  331.     exec $env(COMSPEC) /c echo foo \ \ bar
  332. } {foo " \" bar}
  333. test winpipe-7.12 {BuildCommandLine: N backslashes followed a quote rule #4} {pcOnly exec} {
  334.     exec $env(COMSPEC) /c echo foo \ \\ bar
  335. } {foo " \\" bar}
  336. test winpipe-7.13 {BuildCommandLine: N backslashes followed a quote rule #5} {pcOnly exec} {
  337.     exec $env(COMSPEC) /c echo foo \ \\\ bar
  338. } {foo " \\\" bar}
  339. test winpipe-7.14 {BuildCommandLine: N backslashes followed a quote rule #6} {pcOnly exec} {
  340.     exec $env(COMSPEC) /c echo foo \ \" bar
  341. } {foo " \"" bar}
  342. test winpipe-7.15 {BuildCommandLine: N backslashes followed a quote rule #7} {pcOnly exec} {
  343.     exec $env(COMSPEC) /c echo foo \ \\" bar
  344. } {foo " \\"" bar}
  345. test winpipe-7.16 {BuildCommandLine: N backslashes followed a quote rule #8} {pcOnly exec} {
  346.     exec $env(COMSPEC) /c echo foo \ \\\" bar
  347. } {foo " \\\"" bar}
  348. test winpipe-7.17 {BuildCommandLine: special chars #4} {pcOnly exec} {
  349.     exec $env(COMSPEC) /c echo foo { bar
  350. } "foo { bar"
  351. test winpipe-7.18 {BuildCommandLine: special chars #5} {pcOnly exec} {
  352.     exec $env(COMSPEC) /c echo foo } bar
  353. } "foo } bar"
  354. ### validate the pass-thru from BuildCommandLine() to the crt's parse_cmdline().
  355. ###
  356. test winpipe-8.1 {BuildCommandLine/parse_cmdline pass-thru: null arguments} {pcOnly exec} {
  357.     exec [interpreter] $path(echoArgs.tcl) foo "" bar
  358. } [list $path(echoArgs.tcl) [list foo {} bar]]
  359. test winpipe-8.2 {BuildCommandLine/parse_cmdline pass-thru: null arguments} {pcOnly exec} {
  360.     exec [interpreter] $path(echoArgs.tcl) foo {} bar
  361. } [list $path(echoArgs.tcl) [list foo {} bar]]
  362. test winpipe-8.3 {BuildCommandLine/parse_cmdline pass-thru: dbl quote quoting #1} {pcOnly exec} {
  363.     exec [interpreter] $path(echoArgs.tcl) foo {"} bar
  364. } [list $path(echoArgs.tcl) [list foo {"} bar]]
  365. test winpipe-8.4 {BuildCommandLine/parse_cmdline pass-thru: dbl quote quoting #2} {pcOnly exec} {
  366.     exec [interpreter] $path(echoArgs.tcl) foo {""} bar
  367. } [list $path(echoArgs.tcl) [list foo {""} bar]]
  368. test winpipe-8.5 {BuildCommandLine/parse_cmdline pass-thru: dbl quote quoting #3} {pcOnly exec} {
  369.     exec [interpreter] $path(echoArgs.tcl) foo {" } bar
  370. } [list $path(echoArgs.tcl) [list foo {" } bar]]
  371. test winpipe-8.6 {BuildCommandLine/parse_cmdline pass-thru: dbl quote quoting #4} {pcOnly exec} {
  372.     exec [interpreter] $path(echoArgs.tcl) foo {a="b"} bar
  373. } [list $path(echoArgs.tcl) [list foo {a="b"} bar]]
  374. test winpipe-8.7 {BuildCommandLine/parse_cmdline pass-thru: dbl quote quoting #5} {pcOnly exec} {
  375.     exec [interpreter] $path(echoArgs.tcl) foo {a = "b"} bar
  376. } [list $path(echoArgs.tcl) [list foo {a = "b"} bar]]
  377. test winpipe-8.8 {BuildCommandLine/parse_cmdline pass-thru: dbl quote quoting #6} {pcOnly exec} {
  378.     exec [interpreter] $path(echoArgs.tcl) {"hello"} {""hello""} {"""hello"""} {""hello""} {he llo} {he " llo}
  379. } [list $path(echoArgs.tcl) [list {"hello"} {""hello""} {"""hello"""} {""hello""} {he llo} {he " llo}]]
  380. test winpipe-8.9 {BuildCommandLine/parse_cmdline pass-thru: N backslashes followed a quote rule #1} {pcOnly exec} {
  381.     exec [interpreter] $path(echoArgs.tcl) foo \ bar
  382. } [list $path(echoArgs.tcl) [list foo \ bar]]
  383. test winpipe-8.10 {BuildCommandLine/parse_cmdline pass-thru: N backslashes followed a quote rule #2} {pcOnly exec} {
  384.     exec [interpreter] $path(echoArgs.tcl) foo \\ bar
  385. } [list $path(echoArgs.tcl) [list foo \\ bar]]
  386. test winpipe-8.11 {BuildCommandLine/parse_cmdline pass-thru: N backslashes followed a quote rule #3} {pcOnly exec} {
  387.     exec [interpreter] $path(echoArgs.tcl) foo \ \ bar
  388. } [list $path(echoArgs.tcl) [list foo \ \ bar]]
  389. test winpipe-8.12 {BuildCommandLine/parse_cmdline pass-thru: N backslashes followed a quote rule #4} {pcOnly exec} {
  390.     exec [interpreter] $path(echoArgs.tcl) foo \ \\ bar
  391. } [list $path(echoArgs.tcl) [list foo \ \\ bar]]
  392. test winpipe-8.13 {BuildCommandLine/parse_cmdline pass-thru: N backslashes followed a quote rule #5} {pcOnly exec} {
  393.     exec [interpreter] $path(echoArgs.tcl) foo \ \\\ bar
  394. } [list $path(echoArgs.tcl) [list foo \ \\\ bar]]
  395. test winpipe-8.14 {BuildCommandLine/parse_cmdline pass-thru: N backslashes followed a quote rule #6} {pcOnly exec} {
  396.     exec [interpreter] $path(echoArgs.tcl) foo \ \" bar
  397. } [list $path(echoArgs.tcl) [list foo \ \" bar]]
  398. test winpipe-8.15 {BuildCommandLine/parse_cmdline pass-thru: N backslashes followed a quote rule #7} {pcOnly exec} {
  399.     exec [interpreter] $path(echoArgs.tcl) foo \ \\" bar
  400. } [list $path(echoArgs.tcl) [list foo \ \\" bar]]
  401. test winpipe-8.16 {BuildCommandLine/parse_cmdline pass-thru: N backslashes followed a quote rule #8} {pcOnly exec} {
  402.     exec [interpreter] $path(echoArgs.tcl) foo \ \\\" bar
  403. } [list $path(echoArgs.tcl) [list foo \ \\\" bar]]
  404. test winpipe-8.17 {BuildCommandLine/parse_cmdline pass-thru: special chars #1} {pcOnly exec} {
  405.     exec [interpreter] $path(echoArgs.tcl) foo { bar
  406. } [list $path(echoArgs.tcl) [list foo { bar]]
  407. test winpipe-8.18 {BuildCommandLine/parse_cmdline pass-thru: special chars #2} {pcOnly exec} {
  408.     exec [interpreter] $path(echoArgs.tcl) foo } bar
  409. } [list $path(echoArgs.tcl) [list foo } bar]]
  410. test winpipe-8.19 {ensure parse_cmdline isn't doing wildcard replacement} {pcOnly exec} {
  411.     exec [interpreter] $path(echoArgs.tcl) foo * makefile.?c bar
  412. } [list $path(echoArgs.tcl) [list foo * makefile.?c bar]]
  413. # restore old values for env(TMP) and env(TEMP)
  414. if {[catch {set env(TMP) $env_tmp}]} {
  415.     unset env(TMP)
  416. }
  417. if {[catch {set env(TEMP) $env_temp}]} {
  418.     unset env(TEMP)
  419. }
  420. # cleanup
  421. file delete big little stdout stderr nothing echoArgs.tcl
  422. ::tcltest::cleanupTests
  423. return