summaryrefslogtreecommitdiffstats
path: root/tcl8.6/tests/stack.test
diff options
context:
space:
mode:
authorWilliam Joye <wjoye@cfa.harvard.edu>2016-10-18 17:31:11 (GMT)
committerWilliam Joye <wjoye@cfa.harvard.edu>2016-10-18 17:31:11 (GMT)
commit066971b1e6e77991d9161bb0216a63ba94ea04f9 (patch)
tree6de02f79b7a4bb08a329581aa67b444fb9001bfd /tcl8.6/tests/stack.test
parentba065c2de121da1c1dfddd0aa587d10e7e150f05 (diff)
parent9966985d896629eede849a84f18e406d1164a16c (diff)
downloadblt-066971b1e6e77991d9161bb0216a63ba94ea04f9.zip
blt-066971b1e6e77991d9161bb0216a63ba94ea04f9.tar.gz
blt-066971b1e6e77991d9161bb0216a63ba94ea04f9.tar.bz2
Merge commit '9966985d896629eede849a84f18e406d1164a16c' as 'tcl8.6'
Diffstat (limited to 'tcl8.6/tests/stack.test')
-rw-r--r--tcl8.6/tests/stack.test62
1 files changed, 62 insertions, 0 deletions
diff --git a/tcl8.6/tests/stack.test b/tcl8.6/tests/stack.test
new file mode 100644
index 0000000..13bc524
--- /dev/null
+++ b/tcl8.6/tests/stack.test
@@ -0,0 +1,62 @@
+# Tests that the stack size is big enough for the application.
+#
+# This file contains a collection of tests for one or more of the Tcl
+# built-in commands. Sourcing this file into Tcl runs the tests and
+# generates output for errors. No output means no errors were found.
+#
+# Copyright (c) 1998-2000 Ajuba Solutions.
+#
+# See the file "license.terms" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+
+package require tcltest 2
+namespace import ::tcltest::*
+
+# Note that a failure in this test may result in a crash of the executable.
+
+test stack-1.1 {maxNestingDepth reached on infinite recursion} -body {
+ # do this in a sub process in case it segfaults
+ exec [interpreter] << {
+ proc recurse {} { recurse }
+ catch { recurse } rv
+ puts $rv
+ }
+} -result {too many nested evaluations (infinite loop?)}
+
+test stack-2.1 {maxNestingDepth reached on infinite recursion} -body {
+ # do this in a sub process in case it segfaults
+ exec [interpreter] << {
+ interp alias {} unknown {} notaknownproc
+ catch { unknown } msg
+ puts $msg
+ }
+} -result {too many nested evaluations (infinite loop?)}
+
+# Make sure that there is enough stack to run regexp even if we're
+# close to the recursion limit. [Bug 947070] [Patch 746378]
+test stack-3.1 {enough room for regexp near recursion limit} -body {
+ # do this in a sub process in case it segfaults
+ exec [interpreter] << {
+ interp recursionlimit {} 10000
+ set depth 0
+ proc a { max } {
+ if { [info level] < $max } {
+ set ::depth [info level]
+ a $max
+ } else {
+ regexp {^ ?} x
+ }
+ }
+ catch { a 10001 }
+ set depth2 $depth
+ puts [list [a $depth] [expr { $depth2 - $depth }]]
+ }
+} -result {1 1}
+
+# cleanup
+::tcltest::cleanupTests
+return
+
+# Local Variables:
+# mode: tcl
+# End: