If [info nameof] contains a space character, several test
cases in main.test fail. The fault is in the test suite
and not the code under test. The attached patch fixes it.
==== Tcl_Main-1.1 Tcl_Main: startup script - normal FAILED
==== Contents of test case:
read $f
---- Result was:
can't read "f": no such variable
---- Result should have been (exact matching):
script {} 0
---- Test generated error; Return code was: 1
---- Return code should have been one of: 0 2
---- Test cleanup failed:
can't read "f": no such variable
==== Tcl_Main-1.1 FAILED
==== Tcl_Main-1.2 Tcl_Main: startup script - can't
begin with '-' FAILED
==== Contents of test case:
puts $f {puts [list $argv0 $argv $tcl_interactive]; exit}
flush $f
read $f
---- Result was:
can't read "f": no such variable
---- Result should have been (exact matching):
{C:/Documents and Settings/kevin/My
Documents/SourceForge/tcl/win/Release/tcltest.exe}
-script 0
---- Test generated error; Return code was: 1
---- Return code should have been one of: 0 2
---- Test cleanup failed:
can't read "f": no such variable
==== Tcl_Main-1.2 FAILED
==== Tcl_Main-1.3 Tcl_Main: encoding of arguments: done
by system encoding
Note the shortcoming explained in Tcl Patch 491789 FAILED
==== Contents of test case:
read $f
---- Result was:
can't read "f": no such variable
---- Result should have been (exact matching):
script Ŕ 0
---- Test generated error; Return code was: 1
---- Return code should have been one of: 0 2
---- Test cleanup failed:
can't read "f": no such variable
==== Tcl_Main-1.3 FAILED
==== Tcl_Main-1.4 Tcl_Main: encoding of arguments: done
by system encoding
Note the shortcoming explained in Tcl Patch 491789 FAILED
==== Contents of test case:
read $f
---- Result was:
can't read "f": no such variable
---- Result should have been (exact matching):
script ? 0
---- Test generated error; Return code was: 1
---- Return code should have been one of: 0 2
---- Test cleanup failed:
can't read "f": no such variable
==== Tcl_Main-1.4 FAILED
==== Tcl_Main-1.5 Tcl_Main: encoding of script name:
system encoding loss
Note the shortcoming explained in Tcl Patch 491789 FAILED
==== Contents of test case:
read $f
---- Result was:
can't read "f": no such variable
---- Result should have been (exact matching):
Ŕ {} 0
---- Test generated error; Return code was: 1
---- Return code should have been one of: 0 2
---- Test cleanup failed:
can't read "f": no such variable
==== Tcl_Main-1.5 FAILED
==== Tcl_Main-1.6 Tcl_Main: encoding of script name:
system encoding loss
Note the shortcoming explained in Tcl Patch 491789 FAILED
==== Contents of test case:
read $f
---- Result was:
can't read "f": no such variable
---- Result should have been (exact matching):
? {} 0
---- Test generated error; Return code was: 1
---- Return code should have been one of: 0 2
---- Test cleanup failed:
can't read "f": no such variable
==== Tcl_Main-1.6 FAILED
==== Tcl_Main-5.2 Tcl_Main able to handle non-blocking
stdin FAILED
==== Contents of test case:
type $f {
fconfigure stdin -blocking 0
puts SUCCESS
}
list [catch {gets $f} line] $line
---- Result was:
1 {can not find channel named "filea21cc8"}
---- Result should have been (exact matching):
0 SUCCESS
---- Test cleanup failed:
can not find channel named "filea21cc8"
==== Tcl_Main-5.2 FAILED
==== Tcl_Main-5.3 Tcl_Main handles stdin EOF in
mid-command FAILED
==== Contents of test case:
type $f "fconfigure stdin -eofchar \\032
if 1 \{\n\032"
variable wait
fileevent $f readable [list set [namespace which
-variable wait] "child exit"]
set id [after 2000 [list set [namespace which -variable
wait] timeout]]
vwait [namespace which -variable wait]
after cancel $id
set wait
---- Result was:
can not find channel named "filea21cc8"
---- Result should have been (exact matching):
child exit
---- Test generated error; Return code was: 1
---- Return code should have been one of: 0 2
---- Test cleanup failed:
can't read "wait": no such variable
==== Tcl_Main-5.3 FAILED
==== Tcl_Main-5.4 Tcl_Main handles stdin EOF in
mid-command FAILED
==== Contents of test case:
variable wait
fileevent $f readable [list set [namespace which
-variable wait] "child exit"]
set id [after 2000 [list set [namespace which -variable
wait] timeout]]
vwait [namespace which -variable wait]
after cancel $id
set wait
---- Result was:
can not find channel named "filea21cc8"
---- Result should have been (exact matching):
child exit
---- Test generated error; Return code was: 1
---- Return code should have been one of: 0 2
---- Test cleanup failed:
can't read "wait": no such variable
==== Tcl_Main-5.4 FAILED
==== Tcl_Main-5.10 Tcl_Main: exit main loop in
mid-interactive command FAILED
==== Contents of test case:
type $f "testsetmainloop
after 2000 testexitmainloop
puts \{1 2"
after 4000
type $f "3 4\}"
set code1 [catch {gets $f} line1]
set code2 [catch {gets $f} line2]
set code3 [catch {gets $f} line3]
list $code1 $line1 $code2 $line2 $code3 $line3
---- Result was:
1 {can not find channel named "filea08730"} 1 {can not
find channel named "filea08730"} 1 {can not find
channel named "filea08730"}
---- Result should have been (exact matching):
0 {Exit MainLoop} 0 {1 2} 0 {3 4}
---- Test cleanup failed:
can not find channel named "filea08730"
==== Tcl_Main-5.10 FAILED
Patch for main.test
Logged In: YES
user_id=80530
This patch works, but I prefer a style that when [list]
is required for proper quoting, you go ahead and
quote all elements within a single [list]. So:
open "|[list [interpreter] arg1 arg2]" w+
rather than
open "|[list [interpreter]] arg1 arg2" w+
even though the literals "arg1" and "arg2" do not need
the quoting.
I'm working up a jumbo patch to deal with space in path
problems in the test suite. I'll include my alternative
in that.
Logged In: YES
user_id=80530
Here's a patch with the alternate fixes to main.test
as well as fixes for similar problems in load.test
and in fileName.test.
Logged In: YES
user_id=80530
fixed in the HEAD (8.4a5)