summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/all.tcl2
-rw-r--r--tests/cmdMZ.test2
-rw-r--r--tests/execute.test81
-rw-r--r--tests/io.test2
-rw-r--r--tests/winTime.test5
5 files changed, 83 insertions, 9 deletions
diff --git a/tests/all.tcl b/tests/all.tcl
index 89a4f1a..287de1f 100644
--- a/tests/all.tcl
+++ b/tests/all.tcl
@@ -12,7 +12,7 @@
package prefer latest
package require Tcl 8.5-
-package require tcltest 2.2
+package require tcltest 2.5
namespace import ::tcltest::*
configure {*}$argv -testdir [file dirname [file dirname [file normalize [
diff --git a/tests/cmdMZ.test b/tests/cmdMZ.test
index 9df6d20..721890c 100644
--- a/tests/cmdMZ.test
+++ b/tests/cmdMZ.test
@@ -26,7 +26,7 @@ namespace eval ::tcl::test::cmdMZ {
namespace import ::tcltest::test
testConstraint knownMsvcBug [expr {![info exists ::env(TRAVIS_OS_NAME)] || ![string match windows $::env(TRAVIS_OS_NAME)]}]
-
+
proc ListGlobMatch {expected actual} {
if {[llength $expected] != [llength $actual]} {
return 0
diff --git a/tests/execute.test b/tests/execute.test
index 808574b..d786534 100644
--- a/tests/execute.test
+++ b/tests/execute.test
@@ -37,6 +37,11 @@ testConstraint testobj [expr {
testConstraint longIs32bit [expr {$tcl_platform(wordSize) == 4}]
testConstraint testexprlongobj [llength [info commands testexprlongobj]]
+
+if {[namespace which -command testbumpinterpepoch] eq ""} {
+ proc testbumpinterpepoch {} { rename ::set ::dummy; rename ::dummy ::set }
+}
+
# Tests for the omnibus TclExecuteByteCode function:
# INST_DONE not tested
@@ -933,8 +938,7 @@ test execute-8.3 {Stack restoration} -setup {
proc f {args} "f $arglst"
proc run {} {
# bump the interp's epoch
- rename ::set ::dummy
- rename ::dummy ::set
+ testbumpinterpepoch
catch f msg
set msg
}
@@ -948,8 +952,7 @@ test execute-8.4 {Compile epoch bump effect on stack trace} -setup {
}
proc FOO {} {
catch {error bar} m o
- rename ::set ::dummy
- rename ::dummy ::set
+ testbumpinterpepoch
return -options $o $m
}
} -body {
@@ -978,6 +981,76 @@ test execute-8.5 {Bug 2038069} -setup {
invoked from within
"catch \[list error FOO\] m o"} -errorline 2}
+test execute-8.6 {Compile epoch bump in global level (bug [fa6bf38d07])} -setup {
+ interp create slave
+ slave eval {
+ package require tcltest
+ catch [list package require -exact Tcltest [info patchlevel]]
+ ::tcltest::loadTestedCommands
+ if {[namespace which -command testbumpinterpepoch] eq ""} {
+ proc testbumpinterpepoch {} { rename ::set ::dummy; rename ::dummy ::set }
+ }
+ }
+} -body {
+ slave eval {
+ lappend res A; testbumpinterpepoch; lappend res B; return; lappend res C;
+ }
+ slave eval {
+ set i 0; while {[incr i] < 3} {
+ lappend res A; testbumpinterpepoch; lappend res B; return; lappend res C;
+ }
+ }
+ slave eval {
+ set i 0; while {[incr i] < 3} {
+ lappend res A; testbumpinterpepoch; lappend res B; break; lappend res C;
+ }
+ }
+ slave eval {
+ catch {
+ lappend res A; testbumpinterpepoch; lappend res B; error test; lappend res C;
+ }
+ }
+ slave eval {set res}
+} -cleanup {
+ interp delete slave
+} -result [lrepeat 4 A B]
+test execute-8.7 {Compile epoch bump in global level (bug [fa6bf38d07]), exception case} -setup {
+ interp create slave
+ slave eval {
+ package require tcltest
+ catch [list package require -exact Tcltest [info patchlevel]]
+ ::tcltest::loadTestedCommands
+ if {[namespace which -command testbumpinterpepoch] eq ""} {
+ proc testbumpinterpepoch {} { rename ::set ::dummy; rename ::dummy ::set }
+ }
+ }
+} -body {
+ set res {}
+ lappend res [catch {
+ slave eval {
+ lappend res A; testbumpinterpepoch; lappend res B; return -code error test; lappend res C;
+ }
+ } e] $e
+ lappend res [catch {
+ slave eval {
+ lappend res A; testbumpinterpepoch; lappend res B; error test; lappend res C;
+ }
+ } e] $e
+ lappend res [catch {
+ slave eval {
+ lappend res A; testbumpinterpepoch; lappend res B; return -code return test; lappend res C;
+ }
+ } e] $e
+ lappend res [catch {
+ slave eval {
+ lappend res A; testbumpinterpepoch; lappend res B; break; lappend res C;
+ }
+ } e] $e
+ list $res [slave eval {set res}]
+} -cleanup {
+ interp delete slave
+} -result [list {1 test 1 test 2 test 3 {}} [lrepeat 4 A B]]
+
test execute-9.1 {Interp result resetting [Bug 1522803]} {
set c 0
catch {
diff --git a/tests/io.test b/tests/io.test
index 6d9e1c3..d4f010a 100644
--- a/tests/io.test
+++ b/tests/io.test
@@ -8084,7 +8084,7 @@ test io-53.17 {[7c187a3773] MBWrite: proper inQueueTail handling} -setup {
removeFile out
} -result {line 100 line}
-test io-54.1 {Recursive channel events} {socket fileevent} {
+test io-54.1 {Recursive channel events} {socket fileevent knownMsvcBug} {
# This test checks to see if file events are delivered during recursive
# event loops when there is buffered data on the channel.
diff --git a/tests/winTime.test b/tests/winTime.test
index add8f98..dbaa14c 100644
--- a/tests/winTime.test
+++ b/tests/winTime.test
@@ -19,6 +19,7 @@ if {[lsearch [namespace children] ::tcltest] == -1} {
catch [list package require -exact Tcltest [info patchlevel]]
testConstraint testwinclock [llength [info commands testwinclock]]
+testConstraint knownMsvcBug [expr {![info exists ::env(TRAVIS_OS_NAME)] || ![string match windows $::env(TRAVIS_OS_NAME)]}]
# The next two tests will crash on Windows if the check for negative
# clock values is not done properly.
@@ -40,7 +41,7 @@ test winTime-1.2 {TclpGetDate} {win} {
# with the Windows clock. 30 sec really isn't enough,
# but how much time does a tester have patience for?
-test winTime-2.1 {Synchronization of Tcl and Windows clocks} {testwinclock} {
+test winTime-2.1 {Synchronization of Tcl and Windows clocks} {testwinclock knownMsvcBug} {
# May fail due to OS/hardware discrepancies. See:
# http://support.microsoft.com/default.aspx?scid=kb;en-us;274323
set failed {}
@@ -50,7 +51,7 @@ test winTime-2.1 {Synchronization of Tcl and Windows clocks} {testwinclock} {
foreach { sys_sec sys_usec tcl_sec tcl_usec } [testwinclock] break
set diff [expr { $tcl_sec - $sys_sec
+ 1.0e-6 * ( $tcl_usec - $sys_usec ) }]
- if { abs($diff) > 0.06 } {
+ if { abs($diff) > 0.1 } {
set failed "Tcl clock differs from system clock by $diff sec"
break
} else {