Attachment "1017151.patch" to
ticket [1017151fff]
added by
dgp
2004-11-02 06:15:43.
Index: library/tcltest/tcltest.tcl
===================================================================
RCS file: /cvsroot/tcl/tcl/library/tcltest/tcltest.tcl,v
retrieving revision 1.92
diff -u -r1.92 tcltest.tcl
--- library/tcltest/tcltest.tcl 30 Oct 2004 02:16:52 -0000 1.92
+++ library/tcltest/tcltest.tcl 1 Nov 2004 23:13:11 -0000
@@ -1949,6 +1949,10 @@
# First, run the setup script
set code [catch {uplevel 1 $setup} setupMsg]
+ if {$code == 1} {
+ set errorInfo(setup) $::errorInfo
+ set errorCode(setup) $::errorCode
+ }
set setupFailure [expr {$code != 0}]
# Only run the test body if the setup was successful
@@ -1967,10 +1971,18 @@
set testResult [uplevel 1 [list [namespace origin Eval] $command 1]]
}
foreach {actualAnswer returnCode} $testResult break
+ if {$returnCode == 1} {
+ set errorInfo(body) $::errorInfo
+ set errorCode(body) $::errorCode
+ }
}
# Always run the cleanup script
set code [catch {uplevel 1 $cleanup} cleanupMsg]
+ if {$code == 1} {
+ set errorInfo(cleanup) $::errorInfo
+ set errorCode(cleanup) $::errorCode
+ }
set cleanupFailure [expr {$code != 0}]
set coreFailure 0
@@ -2084,6 +2096,10 @@
if {$setupFailure} {
puts [outputChannel] "---- Test setup\
failed:\n$setupMsg"
+ if {[info exists errorInfo(setup)]} {
+ puts [outputChannel] "---- errorInfo(setup): $errorInfo(setup)"
+ puts [outputChannel] "---- errorCode(setup): $errorCode(setup)"
+ }
}
if {$scriptFailure} {
if {$scriptCompare} {
@@ -2107,9 +2123,9 @@
puts [outputChannel] "---- Return code should have been\
one of: $returnCodes"
if {[IsVerbose error]} {
- if {[info exists ::errorInfo]} {
- puts [outputChannel] "---- errorInfo: $::errorInfo"
- puts [outputChannel] "---- errorCode: $::errorCode"
+ if {[info exists errorInfo(body)] && ([lsearch $returnCodes 1]<0)} {
+ puts [outputChannel] "---- errorInfo: $errorInfo(body)"
+ puts [outputChannel] "---- errorCode: $errorCode(body)"
}
}
}
@@ -2133,6 +2149,10 @@
}
if {$cleanupFailure} {
puts [outputChannel] "---- Test cleanup failed:\n$cleanupMsg"
+ if {[info exists errorInfo(cleanup)]} {
+ puts [outputChannel] "---- errorInfo(cleanup): $errorInfo(cleanup)"
+ puts [outputChannel] "---- errorCode(cleanup): $errorCode(cleanup)"
+ }
}
if {$coreFailure} {
puts [outputChannel] "---- Core file produced while running\
Index: tests/tcltest.test
===================================================================
RCS file: /cvsroot/tcl/tcl/tests/tcltest.test,v
retrieving revision 1.45
diff -u -r1.45 tcltest.test
--- tests/tcltest.test 11 Sep 2004 00:39:47 -0000 1.45
+++ tests/tcltest.test 1 Nov 2004 23:13:12 -0000
@@ -1740,6 +1740,47 @@
verbose $v
} -match glob -output {*generated error; Return code was: 1*}
+test tcltest-26.1 {Bug/RFE 1017151} -setup {
+ makeFile {
+ package require tcltest
+ set errorInfo "Should never see this"
+ tcltest::test tcltest-26.1.0 {
+ no errorInfo when only return code mismatch
+ } -body {
+ set x 1
+ } -returnCodes error -result 1
+ tcltest::cleanupTests
+ } test.tcl
+} -body {
+ slave msg test.tcl
+ set msg
+} -cleanup {
+ removeFile test.tcl
+} -match glob -result {*
+---- Return code should have been one of: 1
+==== tcltest-26.1.0 FAILED*}
+
+test tcltest-26.2 {Bug/RFE 1017151} -setup {
+ makeFile {
+ package require tcltest
+ set errorInfo "Should never see this"
+ tcltest::test tcltest-26.2.0 {do not mask body errorInfo} -body {
+ error "body error"
+ } -cleanup {
+ error "cleanup error"
+ } -result 1
+ tcltest::cleanupTests
+ } test.tcl
+} -body {
+ slave msg test.tcl
+ set msg
+} -cleanup {
+ removeFile test.tcl
+} -match glob -result {*
+---- errorInfo: body error
+*
+---- errorInfo(cleanup): cleanup error*}
+
cleanupTests
}