| [short] skip |
| |
| go test -c -o mainpanic.exe ./mainpanic & |
| go test -c -o mainexit0.exe ./mainexit0 & |
| go test -c -o testpanic.exe ./testpanic & |
| go test -c -o testbgpanic.exe ./testbgpanic & |
| wait |
| |
| # Test binaries that panic in TestMain should be marked as failing. |
| |
| ! go test -json ./mainpanic |
| stdout '"Action":"fail"' |
| ! stdout '"Action":"pass"' |
| |
| ! go tool test2json ./mainpanic.exe |
| stdout '"Action":"fail"' |
| ! stdout '"Action":"pass"' |
| |
| # Test binaries that exit with status 0 should be marked as passing. |
| |
| go test -json ./mainexit0 |
| stdout '"Action":"pass"' |
| ! stdout '"Action":"fail"' |
| |
| go tool test2json ./mainexit0.exe |
| stdout '"Action":"pass"' |
| ! stdout '"Action":"fail"' |
| |
| # Test functions that panic should never be marked as passing |
| # (https://golang.org/issue/40132). |
| |
| ! go test -json ./testpanic |
| stdout '"Action":"fail"' |
| ! stdout '"Action":"pass"' |
| |
| ! go tool test2json ./testpanic.exe -test.v |
| stdout '"Action":"fail"' |
| ! stdout '"Action":"pass"' |
| |
| ! go tool test2json ./testpanic.exe |
| stdout '"Action":"fail"' |
| ! stdout '"Action":"pass"' |
| |
| # Tests that panic in a background goroutine should be marked as failing. |
| |
| ! go test -json ./testbgpanic |
| stdout '"Action":"fail"' |
| ! stdout '"Action":"pass"' |
| |
| ! go tool test2json ./testbgpanic.exe -test.v |
| stdout '"Action":"fail"' |
| ! stdout '"Action":"pass"' |
| |
| ! go tool test2json ./testbgpanic.exe |
| stdout '"Action":"fail"' |
| ! stdout '"Action":"pass"' |
| |
| -- go.mod -- |
| module m |
| go 1.14 |
| -- mainpanic/mainpanic_test.go -- |
| package mainpanic_test |
| |
| import "testing" |
| |
| func TestMain(m *testing.M) { |
| panic("haha no") |
| } |
| -- mainexit0/mainexit0_test.go -- |
| package mainexit0_test |
| |
| import ( |
| "fmt" |
| "os" |
| "testing" |
| ) |
| |
| func TestMain(m *testing.M) { |
| fmt.Println("nothing to do") |
| os.Exit(0) |
| } |
| -- testpanic/testpanic_test.go -- |
| package testpanic_test |
| |
| import "testing" |
| |
| func TestPanic(*testing.T) { |
| panic("haha no") |
| } |
| -- testbgpanic/testbgpanic_test.go -- |
| package testbgpanic_test |
| |
| import "testing" |
| |
| func TestPanicInBackground(*testing.T) { |
| c := make(chan struct{}) |
| go func() { |
| panic("haha no") |
| close(c) |
| }() |
| <-c |
| } |