summaryrefslogtreecommitdiffstats
path: root/tests/main.test
diff options
context:
space:
mode:
Diffstat (limited to 'tests/main.test')
-rw-r--r--tests/main.test246
1 files changed, 183 insertions, 63 deletions
diff --git a/tests/main.test b/tests/main.test
index d1d5196..f085ddf 100644
--- a/tests/main.test
+++ b/tests/main.test
@@ -1,9 +1,9 @@
# This file contains a collection of tests for generic/tclMain.c.
#
-# RCS: @(#) $Id: main.test,v 1.4 2002/01/27 11:09:26 das Exp $
+# RCS: @(#) $Id: main.test,v 1.5 2002/03/25 20:18:05 dgp Exp $
-if {[catch {package require tcltest 2}]} {
- puts stderr "Skipping tests in [info script]. tcltest v2 needed."
+if {[catch {package require tcltest 2.0.2}]} {
+ puts stderr "Skipping tests in [info script]. tcltest 2.0.2 required."
return
}
@@ -44,7 +44,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-1.1 {
Tcl_Main: startup script - normal
- } -constraints [list exec] -setup {
+ } -constraints {
+ exec
+ } -setup {
makeFile {puts [list $argv0 $argv $tcl_interactive]} script
catch {set f [open "|[interpreter] script" r]}
} -body {
@@ -56,7 +58,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-1.2 {
Tcl_Main: startup script - can't begin with '-'
- } -constraints [list exec] -setup {
+ } -constraints {
+ exec
+ } -setup {
makeFile {puts [list $argv0 $argv $tcl_interactive]} -script
catch {set f [open "|[interpreter] -script" w+]}
} -body {
@@ -71,7 +75,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-1.3 {
Tcl_Main: encoding of arguments: done by system encoding
Note the shortcoming explained in Tcl Patch 491789
- } -constraints [list exec] -setup {
+ } -constraints {
+ exec
+ } -setup {
makeFile {puts [list $argv0 $argv $tcl_interactive]} script
catch {set f [open "|[interpreter] script \u00c0" r]}
} -body {
@@ -85,7 +91,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-1.4 {
Tcl_Main: encoding of arguments: done by system encoding
Note the shortcoming explained in Tcl Patch 491789
- } -constraints [list exec] -setup {
+ } -constraints {
+ exec
+ } -setup {
makeFile {puts [list $argv0 $argv $tcl_interactive]} script
catch {set f [open "|[interpreter] script \u20ac" r]}
} -body {
@@ -99,7 +107,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-1.5 {
Tcl_Main: encoding of script name: system encoding loss
Note the shortcoming explained in Tcl Patch 491789
- } -constraints [list exec] -setup {
+ } -constraints {
+ exec
+ } -setup {
makeFile {puts [list $argv0 $argv $tcl_interactive]} \u00c0
catch {set f [open "|[interpreter] \u00c0" r]}
} -body {
@@ -113,7 +123,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-1.6 {
Tcl_Main: encoding of script name: system encoding loss
Note the shortcoming explained in Tcl Patch 491789
- } -constraints [list exec] -setup {
+ } -constraints {
+ exec
+ } -setup {
makeFile {puts [list $argv0 $argv $tcl_interactive]} \u20ac
catch {set f [open "|[interpreter] \u20ac" r]}
} -body {
@@ -128,7 +140,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-2.1 {
Tcl_Main: appInitProc returns error
- } -constraints [list exec Tcltest] -setup {
+ } -constraints {
+ exec Tcltest
+ } -setup {
makeFile {puts "In script"} script
} -body {
exec [interpreter] script -appinitprocerror >& result
@@ -142,7 +156,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-2.2 {
Tcl_Main: appInitProc returns error
- } -constraints [list exec Tcltest] -body {
+ } -constraints {
+ exec Tcltest
+ } -body {
exec [interpreter] << {puts "In script"} -appinitprocerror >& result
set f [open result]
read $f
@@ -153,7 +169,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-2.3 {
Tcl_Main: appInitProc deletes interp
- } -constraints [list exec Tcltest] -setup {
+ } -constraints {
+ exec Tcltest
+ } -setup {
makeFile {puts "In script"} script
} -body {
exec [interpreter] script -appinitprocdeleteinterp >& result
@@ -167,7 +185,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-2.4 {
Tcl_Main: appInitProc deletes interp
- } -constraints [list exec Tcltest] -body {
+ } -constraints {
+ exec Tcltest
+ } -body {
exec [interpreter] << {puts "In script"} \
-appinitprocdeleteinterp >& result
set f [open result]
@@ -179,7 +199,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-2.5 {
Tcl_Main: appInitProc closes stderr
- } -constraints [list exec Tcltest] -body {
+ } -constraints {
+ exec Tcltest
+ } -body {
exec [interpreter] << {puts "In script"} \
-appinitprocclosestderr >& result
set f [open result]
@@ -193,7 +215,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-3.1 {
Tcl_Main: startup script does not exist
- } -constraints [list exec] -setup {
+ } -constraints {
+ exec
+ } -setup {
catch {removeFile no-such-file}
} -body {
set code [catch {exec [interpreter] no-such-file >& result} result]
@@ -207,7 +231,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-3.2 {
Tcl_Main: startup script raises error
- } -constraints [list exec] -setup {
+ } -constraints {
+ exec
+ } -setup {
makeFile {error ERROR} script
} -body {
set code [catch {exec [interpreter] script >& result} result]
@@ -222,7 +248,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-3.3 {
Tcl_Main: startup script closes stderr
- } -constraints [list exec] -setup {
+ } -constraints {
+ exec
+ } -setup {
makeFile {close stderr; error ERROR} script
} -body {
set code [catch {exec [interpreter] script >& result} result]
@@ -236,7 +264,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-3.4 {
Tcl_Main: startup script holds incomplete script
- } -constraints [list exec] -setup {
+ } -constraints {
+ exec
+ } -setup {
makeFile "if 1 \{" script
} -body {
set code [catch {exec [interpreter] script >& result} result]
@@ -251,7 +281,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-3.5 {
Tcl_Main: startup script sets main loop
- } -constraints [list exec Tcltest] -setup {
+ } -constraints {
+ exec Tcltest
+ } -setup {
makeFile {
rename exit _exit
proc exit {code} {
@@ -277,7 +309,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-3.6 {
Tcl_Main: startup script sets main loop and closes stdin
- } -constraints [list exec Tcltest] -setup {
+ } -constraints {
+ exec Tcltest
+ } -setup {
makeFile {
close stdin
testsetmainloop
@@ -304,7 +338,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-3.7 {
Tcl_Main: startup script deletes interp
- } -constraints [list exec Tcltest] -setup {
+ } -constraints {
+ exec Tcltest
+ } -setup {
makeFile {
rename exit _exit
proc exit {code} {
@@ -326,7 +362,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-3.8 {
Tcl_Main: startup script deletes interp and sets mainloop
- } -constraints [list exec Tcltest] -setup {
+ } -constraints {
+ exec Tcltest
+ } -setup {
makeFile {
testsetmainloop
rename exit _exit
@@ -350,7 +388,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-3.9 {
Tcl_Main: startup script can set tcl_interactive without limit
- } -constraints [list exec] -setup {
+ } -constraints {
+ exec
+ } -setup {
makeFile {set tcl_interactive foo} script
} -body {
exec [interpreter] script >& result
@@ -366,7 +406,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-4.1 {
Tcl_Main: rcFile evaluation deletes interp
- } -constraints [list exec Tcltest] -setup {
+ } -constraints {
+ exec Tcltest
+ } -setup {
set rc [makeFile {testinterpdelete {}} rc]
} -body {
exec [interpreter] << {puts "In script"} \
@@ -381,7 +423,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-4.2 {
Tcl_Main: rcFile evaluation closes stdin
- } -constraints [list exec Tcltest] -setup {
+ } -constraints {
+ exec Tcltest
+ } -setup {
set rc [makeFile {close stdin} rc]
} -body {
exec [interpreter] << {puts "In script"} \
@@ -396,7 +440,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-4.3 {
Tcl_Main: rcFile evaluation closes stdin and sets main loop
- } -constraints [list exec Tcltest] -setup {
+ } -constraints {
+ exec Tcltest
+ } -setup {
set rc [makeFile {
close stdin
testsetmainloop
@@ -422,7 +468,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-4.4 {
Tcl_Main: rcFile evaluation sets main loop
- } -constraints [list exec Tcltest] -setup {
+ } -constraints {
+ exec Tcltest
+ } -setup {
set rc [makeFile {
testsetmainloop
after 0 testexitmainloop
@@ -449,7 +497,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-5.1 {
Tcl_Main: tcl_interactive must be boolean
- } -constraints [list exec] -body {
+ } -constraints {
+ exec
+ } -body {
exec [interpreter] << {set tcl_interactive foo} >& result
set f [open result]
read $f
@@ -461,7 +511,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-5.2 {
Tcl_Main able to handle non-blocking stdin
- } -constraints [list exec] -setup {
+ } -constraints {
+ exec
+ } -setup {
catch {set f [open "|[interpreter]" w+]}
} -body {
type $f {
@@ -475,7 +527,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-5.3 {
Tcl_Main handles stdin EOF in mid-command
- } -constraints [list exec] -setup {
+ } -constraints {
+ exec
+ } -setup {
catch {set f [open "|[interpreter]" w+]}
catch {fconfigure $f -blocking 0}
} -body {
@@ -497,7 +551,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-5.4 {
Tcl_Main handles stdin EOF in mid-command
- } -constraints [list exec] -setup {
+ } -constraints {
+ exec
+ } -setup {
set cmd {makeFile "if 1 \{" script}
catch {set f [open "|[interpreter] < [eval $cmd]" r]}
catch {fconfigure $f -blocking 0}
@@ -519,7 +575,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-5.5 {
Tcl_Main: error raised in interactive mode
- } -constraints [list exec] -body {
+ } -constraints {
+ exec
+ } -body {
exec [interpreter] << {error foo} >& result
set f [open result]
read $f
@@ -530,7 +588,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-5.6 {
Tcl_Main: interactive mode: errors don't stop command loop
- } -constraints [list exec] -body {
+ } -constraints {
+ exec
+ } -body {
exec [interpreter] << {
error foo
puts bar
@@ -544,7 +604,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-5.7 {
Tcl_Main: interactive mode: closed stderr
- } -constraints [list exec] -body {
+ } -constraints {
+ exec
+ } -body {
exec [interpreter] << {
close stderr
error foo
@@ -560,7 +622,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-5.8 {
Tcl_Main: interactive mode: close stdin
-> main loop & [exit] & exit handlers
- } -constraints [list exec Tcltest] -body {
+ } -constraints {
+ exec Tcltest
+ } -body {
exec [interpreter] << {
rename exit _exit
proc exit code {
@@ -582,7 +646,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-5.9 {
Tcl_Main: interactive mode: delete interp
-> main loop & exit handlers, but no [exit]
- } -constraints [list exec Tcltest] -body {
+ } -constraints {
+ exec Tcltest
+ } -body {
exec [interpreter] << {
rename exit _exit
proc exit code {
@@ -603,7 +669,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-5.10 {
Tcl_Main: exit main loop in mid-interactive command
- } -constraints [list exec Tcltest] -setup {
+ } -constraints {
+ exec Tcltest
+ } -setup {
catch {set f [open "|[interpreter]" w+]}
catch {fconfigure $f -blocking 0}
} -body {
@@ -622,7 +690,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-5.11 {
Tcl_Main: EOF in interactive main loop
- } -constraints [list exec Tcltest] -body {
+ } -constraints {
+ exec Tcltest
+ } -body {
exec [interpreter] << {
rename exit _exit
proc exit code {
@@ -642,7 +712,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-5.12 {
Tcl_Main: close stdin in interactive main loop
- } -constraints [list exec Tcltest] -body {
+ } -constraints {
+ exec Tcltest
+ } -body {
exec [interpreter] << {
rename exit _exit
proc exit code {
@@ -666,7 +738,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-6.1 {
Tcl_Main: enable prompts with tcl_interactive
- } -constraints [list exec] -body {
+ } -constraints {
+ exec
+ } -body {
exec [interpreter] << {set tcl_interactive 1} >& result
set f [open result]
read $f
@@ -677,7 +751,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-6.2 {
Tcl_Main: prompt deletes interp
- } -constraints [list exec Tcltest] -body {
+ } -constraints {
+ exec Tcltest
+ } -body {
exec [interpreter] << {
set tcl_prompt1 {testinterpdelete {}}
set tcl_interactive 1
@@ -692,7 +768,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-6.3 {
Tcl_Main: prompt closes stdin
- } -constraints [list exec] -body {
+ } -constraints {
+ exec
+ } -body {
exec [interpreter] << {
set tcl_prompt1 {close stdin}
set tcl_interactive 1
@@ -707,7 +785,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-6.4 {
Tcl_Main: interactive output, closed stdout
- } -constraints [list exec] -body {
+ } -constraints {
+ exec
+ } -body {
exec [interpreter] << {
set tcl_interactive 1
close stdout
@@ -723,7 +803,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-6.5 {
Tcl_Main: interactive entry to main loop
- } -constraints [list exec Tcltest] -body {
+ } -constraints {
+ exec Tcltest
+ } -body {
exec [interpreter] << {
set tcl_interactive 1
testsetmainloop
@@ -737,7 +819,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-6.6 {
Tcl_Main: number of prompts during stdin close exit
- } -constraints [list exec] -body {
+ } -constraints {
+ exec
+ } -body {
exec [interpreter] << {
set tcl_interactive 1
close stdin} >& result
@@ -752,7 +836,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-7.1 {
Tcl_Main: [exit] defined as no-op -> still have exithandlers
- } -constraints [list exec Tcltest] -body {
+ } -constraints {
+ exec Tcltest
+ } -body {
exec [interpreter] << {
proc exit args {}
testexithandler create 0
@@ -766,7 +852,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-7.2 {
Tcl_Main: [exit] defined as no-op -> still have exithandlers
- } -constraints [list exec Tcltest] -body {
+ } -constraints {
+ exec Tcltest
+ } -body {
exec [interpreter] << {
proc exit args {}
testexithandler create 0
@@ -784,7 +872,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-8.1 {
StdinProc: handles non-blocking stdin
- } -constraints [list exec Tcltest] -body {
+ } -constraints {
+ exec Tcltest
+ } -body {
exec [interpreter] << {
testsetmainloop
fconfigure stdin -blocking 0
@@ -799,7 +889,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-8.2 {
StdinProc: handles stdin EOF
- } -constraints [list exec Tcltest] -body {
+ } -constraints {
+ exec Tcltest
+ } -body {
exec [interpreter] << {
testsetmainloop
testexithandler create 0
@@ -819,7 +911,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-8.3 {
StdinProc: handles interactive stdin EOF
- } -constraints [list exec Tcltest] -body {
+ } -constraints {
+ exec Tcltest
+ } -body {
exec [interpreter] << {
testsetmainloop
testexithandler create 0
@@ -838,7 +932,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-8.4 {
StdinProc: handles stdin close
- } -constraints [list exec Tcltest] -body {
+ } -constraints {
+ exec Tcltest
+ } -body {
exec [interpreter] << {
testsetmainloop
rename exit _exit
@@ -859,7 +955,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-8.5 {
StdinProc: handles interactive stdin close
- } -constraints [list exec Tcltest] -body {
+ } -constraints {
+ exec Tcltest
+ } -body {
exec [interpreter] << {
testsetmainloop
set tcl_interactive 1
@@ -881,7 +979,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-8.6 {
StdinProc: handles event loop re-entry
- } -constraints [list exec Tcltest] -body {
+ } -constraints {
+ exec Tcltest
+ } -body {
exec [interpreter] << {
testsetmainloop
after 100 {puts 1; set delay 1}
@@ -898,7 +998,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-8.7 {
StdinProc: handling of errors
- } -constraints [list exec Tcltest] -body {
+ } -constraints {
+ exec Tcltest
+ } -body {
exec [interpreter] << {
testsetmainloop
error foo
@@ -913,7 +1015,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-8.8 {
StdinProc: handling of errors, closed stderr
- } -constraints [list exec Tcltest] -body {
+ } -constraints {
+ exec Tcltest
+ } -body {
exec [interpreter] << {
testsetmainloop
close stderr
@@ -929,7 +1033,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-8.9 {
StdinProc: interactive output
- } -constraints [list exec Tcltest] -body {
+ } -constraints {
+ exec Tcltest
+ } -body {
exec [interpreter] << {
testsetmainloop
set tcl_interactive 1
@@ -943,7 +1049,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-8.10 {
StdinProc: interactive output, closed stdout
- } -constraints [list exec Tcltest] -body {
+ } -constraints {
+ exec Tcltest
+ } -body {
exec [interpreter] << {
testsetmainloop
close stdout
@@ -959,7 +1067,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-8.11 {
StdinProc: prompt deletes interp
- } -constraints [list exec Tcltest] -body {
+ } -constraints {
+ exec Tcltest
+ } -body {
exec [interpreter] << {
testsetmainloop
set tcl_prompt1 {testinterpdelete {}}
@@ -973,7 +1083,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-8.12 {
StdinProc: prompt closes stdin
- } -constraints [list exec Tcltest] -body {
+ } -constraints {
+ exec Tcltest
+ } -body {
exec [interpreter] << {
testsetmainloop
set tcl_prompt1 {close stdin}
@@ -992,7 +1104,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-9.1 {
Prompt: custom prompt variables
- } -constraints [list exec] -body {
+ } -constraints {
+ exec
+ } -body {
exec [interpreter] << {
set tcl_prompt1 {puts -nonewline stdout "one "}
set tcl_prompt2 {puts -nonewline stdout "two "}
@@ -1008,7 +1122,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-9.2 {
Prompt: error in custom prompt variables
- } -constraints [list exec] -body {
+ } -constraints {
+ exec
+ } -body {
exec [interpreter] << {
set tcl_prompt1 {error foo}
set tcl_interactive 1
@@ -1023,7 +1139,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-9.3 {
Prompt: error in custom prompt variables, closed stderr
- } -constraints [list exec] -body {
+ } -constraints {
+ exec
+ } -body {
exec [interpreter] << {
set tcl_prompt1 {close stderr; error foo}
set tcl_interactive 1} >& result
@@ -1036,7 +1154,9 @@ namespace eval ::tcl::main::test {
test Tcl_Main-9.4 {
Prompt: error in custom prompt variables, closed stdout
- } -constraints [list exec] -body {
+ } -constraints {
+ exec
+ } -body {
exec [interpreter] << {
set tcl_prompt1 {close stdout; error foo}
set tcl_interactive 1} >& result