aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2014-11-21 08:10:49 +1000
committerSteve Bennett <steveb@workware.net.au>2014-12-31 08:12:59 +1000
commit7edde07972b9a43cd4e6305bd0e56b4a972ac8c3 (patch)
tree36ac47362c87d2798e8455c9186922260eaf2f09 /tests
parent6d723d81e647cf8814eccfe65321a7a0e7557a2b (diff)
downloadjimtcl-7edde07972b9a43cd4e6305bd0e56b4a972ac8c3.zip
jimtcl-7edde07972b9a43cd4e6305bd0e56b4a972ac8c3.tar.gz
jimtcl-7edde07972b9a43cd4e6305bd0e56b4a972ac8c3.tar.bz2
Throw an error when parsing a bad script
If a script has a missing bracket (for example), currently it is silently ignored, except by [source] Signed-off-by: Steve Bennett <steveb@workware.net.au>
Diffstat (limited to 'tests')
-rw-r--r--tests/errors.tcl36
-rw-r--r--tests/stacktrace.test62
2 files changed, 53 insertions, 45 deletions
diff --git a/tests/errors.tcl b/tests/errors.tcl
index 1105dfa..0992c59 100644
--- a/tests/errors.tcl
+++ b/tests/errors.tcl
@@ -4,56 +4,60 @@ proc error_generator {type} {
switch $type {
badcmd {
bogus command called
- }
+ }
badvar {
set bogus
- }
+ }
error {
error bogus
- }
+ }
interpbadvar {
set x "some $bogus text"
- }
+ }
interpbadcmd {
set x "some $bogus text"
- }
+ }
package {
package require dummy
- }
+ }
source {
source dummy.tcl
- }
+ }
badpackage {
package require bogus
- }
+ }
returncode {
return -code error failure
- }
+ }
+ badproc {
+ error_badproc
+ }
default {
puts "Unknown type=$type"
}
}
}
-
-
-
# line 40: Some empty lines above so that line numbers don't change
proc error_caller {type {method call}} {
switch $method {
call {
error_generator $type
- }
+ }
uplevel {
uplevel 1 [list error_generator $type]
- }
+ }
eval {
eval [list error_generator $type]
- }
+ }
evalstr {
eval error_generator $type
- }
+ }
default {
puts "Unknown method=$method"
}
}
}
+
+proc error_badproc {} {
+ return [list missing bracket here
+}
diff --git a/tests/stacktrace.test b/tests/stacktrace.test
index 13028a9..847297b 100644
--- a/tests/stacktrace.test
+++ b/tests/stacktrace.test
@@ -4,7 +4,7 @@ package require errors
# Make this a proc so that the line numbers don't have to change
proc main {} {
set id1 0
- foreach type {badcmd badvar error interpbadvar interpbadcmd package source badpackage returncode} {
+ foreach type {badcmd badvar badproc error interpbadvar interpbadcmd package source badpackage returncode} {
set id2 0
incr id1
foreach method {call uplevel eval evalstr} {
@@ -74,38 +74,42 @@ set expected {
err-2.2 {1 {can't read "bogus": no such variable} {{} errors.tcl 9 error_generator errors.tcl 47 error_caller stacktrace.test 17}}
err-2.3 {1 {can't read "bogus": no such variable} {{} errors.tcl 9 error_generator errors.tcl 50 error_caller stacktrace.test 17}}
err-2.4 {1 {can't read "bogus": no such variable} {{} errors.tcl 9 error_generator errors.tcl 53 error_caller stacktrace.test 17}}
- err-3.1 {1 bogus {{} errors.tcl 12 error_generator errors.tcl 44 error_caller stacktrace.test 17}}
- err-3.2 {1 bogus {{} errors.tcl 12 error_generator errors.tcl 47 error_caller stacktrace.test 17}}
- err-3.3 {1 bogus {{} errors.tcl 12 error_generator errors.tcl 50 error_caller stacktrace.test 17}}
- err-3.4 {1 bogus {{} errors.tcl 12 error_generator errors.tcl 53 error_caller stacktrace.test 17}}
- err-4.1 {1 {can't read "bogus": no such variable} {{} errors.tcl 15 error_generator errors.tcl 44 error_caller stacktrace.test 17}}
- err-4.2 {1 {can't read "bogus": no such variable} {{} errors.tcl 15 error_generator errors.tcl 47 error_caller stacktrace.test 17}}
- err-4.3 {1 {can't read "bogus": no such variable} {{} errors.tcl 15 error_generator errors.tcl 50 error_caller stacktrace.test 17}}
- err-4.4 {1 {can't read "bogus": no such variable} {{} errors.tcl 15 error_generator errors.tcl 53 error_caller stacktrace.test 17}}
- err-5.1 {1 {can't read "bogus": no such variable} {{} errors.tcl 18 error_generator errors.tcl 44 error_caller stacktrace.test 17}}
- err-5.2 {1 {can't read "bogus": no such variable} {{} errors.tcl 18 error_generator errors.tcl 47 error_caller stacktrace.test 17}}
- err-5.3 {1 {can't read "bogus": no such variable} {{} errors.tcl 18 error_generator errors.tcl 50 error_caller stacktrace.test 17}}
- err-5.4 {1 {can't read "bogus": no such variable} {{} errors.tcl 18 error_generator errors.tcl 53 error_caller stacktrace.test 17}}
- err-6.1 {1 {from dummyproc
+ err-3.1 {1 {unmatched "["} {{} errors.tcl 62 error_badproc errors.tcl 33 error_generator errors.tcl 44 error_caller stacktrace.test 17}}
+ err-3.2 {1 {unmatched "["} {{} errors.tcl 62 error_badproc errors.tcl 33 error_generator errors.tcl 47 error_caller stacktrace.test 17}}
+ err-3.3 {1 {unmatched "["} {{} errors.tcl 62 error_badproc errors.tcl 33 error_generator errors.tcl 50 error_caller stacktrace.test 17}}
+ err-3.4 {1 {unmatched "["} {{} errors.tcl 62 error_badproc errors.tcl 33 error_generator errors.tcl 53 error_caller stacktrace.test 17}}
+ err-4.1 {1 bogus {{} errors.tcl 12 error_generator errors.tcl 44 error_caller stacktrace.test 17}}
+ err-4.2 {1 bogus {{} errors.tcl 12 error_generator errors.tcl 47 error_caller stacktrace.test 17}}
+ err-4.3 {1 bogus {{} errors.tcl 12 error_generator errors.tcl 50 error_caller stacktrace.test 17}}
+ err-4.4 {1 bogus {{} errors.tcl 12 error_generator errors.tcl 53 error_caller stacktrace.test 17}}
+ err-5.1 {1 {can't read "bogus": no such variable} {{} errors.tcl 15 error_generator errors.tcl 44 error_caller stacktrace.test 17}}
+ err-5.2 {1 {can't read "bogus": no such variable} {{} errors.tcl 15 error_generator errors.tcl 47 error_caller stacktrace.test 17}}
+ err-5.3 {1 {can't read "bogus": no such variable} {{} errors.tcl 15 error_generator errors.tcl 50 error_caller stacktrace.test 17}}
+ err-5.4 {1 {can't read "bogus": no such variable} {{} errors.tcl 15 error_generator errors.tcl 53 error_caller stacktrace.test 17}}
+ err-6.1 {1 {can't read "bogus": no such variable} {{} errors.tcl 18 error_generator errors.tcl 44 error_caller stacktrace.test 17}}
+ err-6.2 {1 {can't read "bogus": no such variable} {{} errors.tcl 18 error_generator errors.tcl 47 error_caller stacktrace.test 17}}
+ err-6.3 {1 {can't read "bogus": no such variable} {{} errors.tcl 18 error_generator errors.tcl 50 error_caller stacktrace.test 17}}
+ err-6.4 {1 {can't read "bogus": no such variable} {{} errors.tcl 18 error_generator errors.tcl 53 error_caller stacktrace.test 17}}
+ err-7.1 {1 {from dummyproc
Can't load package dummy} {{} dummy.tcl 3 dummyproc dummy.tcl 6 {} errors.tcl 21 error_generator errors.tcl 44 error_caller stacktrace.test 17}}
- err-6.2 {1 {from dummyproc
+ err-7.2 {1 {from dummyproc
Can't load package dummy} {{} dummy.tcl 3 dummyproc dummy.tcl 6 {} errors.tcl 21 error_generator errors.tcl 47 error_caller stacktrace.test 17}}
- err-6.3 {1 {from dummyproc
+ err-7.3 {1 {from dummyproc
Can't load package dummy} {{} dummy.tcl 3 dummyproc dummy.tcl 6 {} errors.tcl 21 error_generator errors.tcl 50 error_caller stacktrace.test 17}}
- err-6.4 {1 {from dummyproc
+ err-7.4 {1 {from dummyproc
Can't load package dummy} {{} dummy.tcl 3 dummyproc dummy.tcl 6 {} errors.tcl 21 error_generator errors.tcl 53 error_caller stacktrace.test 17}}
- err-7.1 {1 {from dummyproc} {{} dummy.tcl 3 dummyproc dummy.tcl 6 {} errors.tcl 24 error_generator errors.tcl 44 error_caller stacktrace.test 17}}
- err-7.2 {1 {from dummyproc} {{} dummy.tcl 3 dummyproc dummy.tcl 6 {} errors.tcl 24 error_generator errors.tcl 47 error_caller stacktrace.test 17}}
- err-7.3 {1 {from dummyproc} {{} dummy.tcl 3 dummyproc dummy.tcl 6 {} errors.tcl 24 error_generator errors.tcl 50 error_caller stacktrace.test 17}}
- err-7.4 {1 {from dummyproc} {{} dummy.tcl 3 dummyproc dummy.tcl 6 {} errors.tcl 24 error_generator errors.tcl 53 error_caller stacktrace.test 17}}
- err-8.1 {1 {Can't load package bogus} {{} errors.tcl 27 error_generator errors.tcl 44 error_caller stacktrace.test 17}}
- err-8.2 {1 {Can't load package bogus} {{} errors.tcl 27 error_generator errors.tcl 47 error_caller stacktrace.test 17}}
- err-8.3 {1 {Can't load package bogus} {{} errors.tcl 27 error_generator errors.tcl 50 error_caller stacktrace.test 17}}
- err-8.4 {1 {Can't load package bogus} {{} errors.tcl 27 error_generator errors.tcl 53 error_caller stacktrace.test 17}}
- err-9.1 {1 failure {{} errors.tcl 44 error_caller stacktrace.test 17}}
- err-9.2 {1 failure {{} errors.tcl 47 error_caller stacktrace.test 17}}
- err-9.3 {1 failure {{} errors.tcl 50 error_caller stacktrace.test 17}}
- err-9.4 {1 failure {{} errors.tcl 53 error_caller stacktrace.test 17}}
+ err-8.1 {1 {from dummyproc} {{} dummy.tcl 3 dummyproc dummy.tcl 6 {} errors.tcl 24 error_generator errors.tcl 44 error_caller stacktrace.test 17}}
+ err-8.2 {1 {from dummyproc} {{} dummy.tcl 3 dummyproc dummy.tcl 6 {} errors.tcl 24 error_generator errors.tcl 47 error_caller stacktrace.test 17}}
+ err-8.3 {1 {from dummyproc} {{} dummy.tcl 3 dummyproc dummy.tcl 6 {} errors.tcl 24 error_generator errors.tcl 50 error_caller stacktrace.test 17}}
+ err-8.4 {1 {from dummyproc} {{} dummy.tcl 3 dummyproc dummy.tcl 6 {} errors.tcl 24 error_generator errors.tcl 53 error_caller stacktrace.test 17}}
+ err-9.1 {1 {Can't load package bogus} {{} errors.tcl 27 error_generator errors.tcl 44 error_caller stacktrace.test 17}}
+ err-9.2 {1 {Can't load package bogus} {{} errors.tcl 27 error_generator errors.tcl 47 error_caller stacktrace.test 17}}
+ err-9.3 {1 {Can't load package bogus} {{} errors.tcl 27 error_generator errors.tcl 50 error_caller stacktrace.test 17}}
+ err-9.4 {1 {Can't load package bogus} {{} errors.tcl 27 error_generator errors.tcl 53 error_caller stacktrace.test 17}}
+ err-10.1 {1 failure {{} errors.tcl 44 error_caller stacktrace.test 17}}
+ err-10.2 {1 failure {{} errors.tcl 47 error_caller stacktrace.test 17}}
+ err-10.3 {1 failure {{} errors.tcl 50 error_caller stacktrace.test 17}}
+ err-10.4 {1 failure {{} errors.tcl 53 error_caller stacktrace.test 17}}
}
# Set this to output expected results to stderr