Commit ae562107 authored by Russ Cox's avatar Russ Cox

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
parent 13516383
......@@ -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
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment