56 lines
1.1 KiB
Plaintext
56 lines
1.1 KiB
Plaintext
source [file dirname [info script]]/testing.tcl
|
|
needs constraint jim; needs cmd package
|
|
proc a {} {
|
|
error "error thrown from a"
|
|
}
|
|
|
|
proc b {} {
|
|
set rc [catch {a} msg]
|
|
if {$rc} {
|
|
error $msg [info stacktrace]
|
|
}
|
|
}
|
|
|
|
test error-1.1 "Rethrow caught error" {
|
|
set rc [catch {b} msg]
|
|
#puts stderr "error-1.1\n[errorInfo $msg]\n"
|
|
|
|
list $rc $msg [basename-stacktrace [info stacktrace]]
|
|
} {1 {error thrown from a} {{} error.test 4 a error.test 8 b error.test 15}}
|
|
|
|
proc c {} {
|
|
a
|
|
}
|
|
|
|
proc d {} {
|
|
c
|
|
}
|
|
|
|
proc e {} {
|
|
d
|
|
}
|
|
|
|
test error-1.2 "Modify stacktrace" {
|
|
set rc [catch {e} msg]
|
|
set st [info stacktrace]
|
|
# Now elide one entry from the stacktrace
|
|
#puts [errorInfo $msg]
|
|
set newst {}
|
|
foreach {p f l} $st {
|
|
if {$p ne "d"} {
|
|
lappend newst $p $f $l
|
|
}
|
|
}
|
|
# Now rethrow with the new stack
|
|
set rc [catch {error $msg $newst} msg]
|
|
#puts [errorInfo $msg]
|
|
basename-stacktrace [info stacktrace]
|
|
} {{} error.test 4 a error.test 22 c error.test 26 e error.test 34}
|
|
|
|
# Package should be able to invoke exit, which should exit if not caught
|
|
test error-2.1 "Exit from package" {
|
|
catch -exit {package require exitpackage} msg
|
|
} 6
|
|
|
|
testreport
|