mirror of
https://github.com/golang/go.git
synced 2025-05-28 02:41:30 +00:00
testing: diagnose buggy tests that panic(nil)
Fixes #6546. LGTM=dave, bradfitz, r R=r, dave, bradfitz CC=golang-codereviews https://golang.org/cl/55780043
This commit is contained in:
parent
1351638314
commit
ae56210708
@ -3,3 +3,4 @@ liblink: pull linker i/o into separate liblink C library (CL 35790044)
|
||||
misc/dist: renamed misc/makerelease (CL 39920043)
|
||||
runtime: output how long goroutines are blocked (CL 50420043)
|
||||
syscall: add NewCallbackCDecl to use for windows callbacks (CL 36180044)
|
||||
testing: diagnose buggy tests that panic(nil) (CL 55780043)
|
||||
|
@ -376,10 +376,15 @@ func tRunner(t *T, test *InternalTest) {
|
||||
// returned normally or because a test failure triggered
|
||||
// a call to runtime.Goexit, record the duration and send
|
||||
// a signal saying that the test is done.
|
||||
var finished bool
|
||||
defer func() {
|
||||
t.duration = time.Now().Sub(t.start)
|
||||
// If the test panicked, print any test output before dying.
|
||||
if err := recover(); err != nil {
|
||||
err := recover()
|
||||
if !finished && err == nil {
|
||||
err = fmt.Errorf("test executed panic(nil)")
|
||||
}
|
||||
if err != nil {
|
||||
t.Fail()
|
||||
t.report()
|
||||
panic(err)
|
||||
@ -389,6 +394,7 @@ func tRunner(t *T, test *InternalTest) {
|
||||
|
||||
t.start = time.Now()
|
||||
test.F(t)
|
||||
finished = true
|
||||
}
|
||||
|
||||
// An internal function but exported because it is cross-package; part of the implementation
|
||||
|
Loading…
x
Reference in New Issue
Block a user