# For issue 41355 [short] skip # This test could fail if the testing package does not wait until # a panicking test does the panic. Turn off multithreading and GC # to increase the probability of such a failure. env GOMAXPROCS=1 env GOGC=off # If the test exits with 'no tests to run', it means the testing package # implementation is incorrect and does not wait until a test panic. # If the test exits with '(?s)panic: die.*panic: die', it means # the testing package did an extra panic for a panicking test. ! go test -v cleanup_failnow/panic_nocleanup_test.go ! stdout 'no tests to run' stdout '(?s)panic: die \[recovered\].*panic: die' ! stdout '(?s)panic: die \[recovered\].*panic: die.*panic: die' ! go test -v cleanup_failnow/panic_withcleanup_test.go ! stdout 'no tests to run' stdout '(?s)panic: die \[recovered\].*panic: die' ! stdout '(?s)panic: die \[recovered\].*panic: die.*panic: die' -- cleanup_failnow/panic_nocleanup_test.go -- package panic_nocleanup_test import "testing" func TestX(t *testing.T) { t.Run("x", func(t *testing.T) { panic("die") }) } -- cleanup_failnow/panic_withcleanup_test.go -- package panic_withcleanup_test import "testing" func TestCleanupWithFailNow(t *testing.T) { t.Cleanup(func() { t.FailNow() }) t.Run("x", func(t *testing.T) { t.Run("y", func(t *testing.T) { panic("die") }) }) }