diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/compile.test | 104 |
1 files changed, 53 insertions, 51 deletions
diff --git a/tests/compile.test b/tests/compile.test index ebb5f62..5025671 100644 --- a/tests/compile.test +++ b/tests/compile.test @@ -11,11 +11,15 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: compile.test,v 1.33 2004/10/26 16:46:15 dgp Exp $ +# RCS: @(#) $Id: compile.test,v 1.34 2004/12/02 11:10:49 dkf Exp $ package require tcltest 2 namespace import -force ::tcltest::* +testConstraint exec [llength [info commands exec]] +testConstraint memory [llength [info commands memory]] +testConstraint testevalex [llength [info commands testevalex]] + # The following tests are very incomplete, although the rest of the # test suite covers this file fairly well. @@ -273,15 +277,12 @@ test compile-11.9 {Tcl_Append*: ensure Tcl_ResetResult is used properly} { # with TCL_MEM_DEBUG # # Special test for leak on interp delete [Bug 467523]. -::tcltest::testConstraint exec [llength [info commands exec]] -::tcltest::testConstraint memory [llength [info commands memory]] - -test compile-12.1 {testing literal leak on interp delete} {memory} { +test compile-12.1 {testing literal leak on interp delete} -setup { proc getbytes {} { set lines [split [memory info] "\n"] - lindex [lindex $lines 3] 3 + lindex $lines 3 3 } - +} -constraints memory -body { set end [getbytes] for {set i 0} {$i < 5} {incr i} { interp create foo @@ -291,36 +292,36 @@ test compile-12.1 {testing literal leak on interp delete} {memory} { interp delete foo set tmp $end set end [getbytes] - } + } + set leakedBytes [expr {$end - $tmp}] +} -cleanup { rename getbytes {} - set leak [expr {$end - $tmp}] -} 0 +} -result 0 # Special test for a memory error in a preliminary fix of [Bug 467523]. # It requires executing a helpfile. Presumably the child process is # used because when this test fails, it crashes. -test compile-12.2 {testing error on literal deletion} {memory exec} { - makeFile { +test compile-12.2 {testing error on literal deletion} -constraints {memory exec} -body { + set sourceFile [makeFile { for {set i 0} {$i < 5} {incr i} { namespace eval bar {} namespace delete bar } puts 0 - } source.file - set res [catch { - exec [interpreter] source.file - }] - catch {removeFile source.file} - set res -} 0 + } source.file] + exec [interpreter] $sourceFile +} -cleanup { + catch {removeFile $sourceFile} +} -result 0 # Test to catch buffer overrun in TclCompileTokens from buf 530320 -test compile-12.3 {check for a buffer overrun} { +test compile-12.3 {check for a buffer overrun} -body { proc crash {} { puts $array([expr {a+2}]) } - list [catch crash msg] $msg -} {1 {syntax error in expression "a+2": variable references require preceding $}} - -test compile-12.4 {TclCleanupLiteralTable segfault} { + crash +} -returnCodes error -cleanup { + rename crash {} +} -result {syntax error in expression "a+2": variable references require preceding $} +test compile-12.4 {TclCleanupLiteralTable segfault} -body { # Tcl Bug 1001997 # Here, we're trying to test a case that causes a crash in # TclCleanupLiteralTable. The conditions that we're trying to @@ -347,35 +348,37 @@ test compile-12.4 {TclCleanupLiteralTable segfault} { # (c) Delete the interpreter to invoke TclCleanupLiteralTable # and tickle the bug. proc foo {} { - set i [interp create] - $i eval { - namespace eval ::w {concat 4649; variable bugbug} - namespace eval ::w { - concat x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 \ - x11 x12 x13 x14 x15 x16 x17 x18 x19 x20 \ - x21 x22 x23 x24 x25 x26 x27 x28 x29 x30 \ - x31 x32 X33 X34 X35 X36 X37 X38 X39 X40 \ - x41 x42 x43 x44 x45 x46 x47 x48 x49 x50 \ - x51 x52 x53 x54 x55 x56 x57 x58 x59 x60 \ - x61 x62 x63 x64 - concat y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 \ - y11 y12 y13 y14 y15 y16 y17 y18 y19 y20 \ - y21 y22 y23 y24 y25 y26 y27 y28 y29 y30 \ - y31 y32 Y33 Y34 Y35 Y36 Y37 Y38 Y39 Y40 \ - y41 y42 y43 y44 y45 y46 y47 y48 y49 y50 \ - y51 y52 y53 y54 y55 y56 y57 y58 y59 y60 \ - y61 y62 y63 y64 - concat z1 z2 z3 z4 z5 z6 z7 z8 z9 z10 \ - z11 z12 z13 z14 z15 z16 z17 z18 z19 z20 \ - z21 z22 z23 z24 z25 z26 z27 z28 z29 z30 \ - z31 z32 + set i [interp create] + $i eval { + namespace eval ::w {concat 4649; variable bugbug} + namespace eval ::w { + concat x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 \ + x11 x12 x13 x14 x15 x16 x17 x18 x19 x20 \ + x21 x22 x23 x24 x25 x26 x27 x28 x29 x30 \ + x31 x32 X33 X34 X35 X36 X37 X38 X39 X40 \ + x41 x42 x43 x44 x45 x46 x47 x48 x49 x50 \ + x51 x52 x53 x54 x55 x56 x57 x58 x59 x60 \ + x61 x62 x63 x64 + concat y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 \ + y11 y12 y13 y14 y15 y16 y17 y18 y19 y20 \ + y21 y22 y23 y24 y25 y26 y27 y28 y29 y30 \ + y31 y32 Y33 Y34 Y35 Y36 Y37 Y38 Y39 Y40 \ + y41 y42 y43 y44 y45 y46 y47 y48 y49 y50 \ + y51 y52 y53 y54 y55 y56 y57 y58 y59 y60 \ + y61 y62 y63 y64 + concat z1 z2 z3 z4 z5 z6 z7 z8 z9 z10 \ + z11 z12 z13 z14 z15 z16 z17 z18 z19 z20 \ + z21 z22 z23 z24 z25 z26 z27 z28 z29 z30 \ + z31 z32 + } } - } - interp delete $i; # must not crash - return ok + interp delete $i; # must not crash + return ok } foo -} ok +} -cleanup { + rename foo {} +} -result ok # Special test for underestimating the maxStackSize required for a # compiled command. A failure will cause a segfault in the child @@ -430,7 +433,6 @@ test compile-15.5 {proper TCL_RETURN code from [return]} { set result } "" -testConstraint testevalex [llength [info commands testevalex]] for {set noComp 0} {$noComp <= 1} {incr noComp} { if $noComp { |