# Regression test for https://golang.org/issue/45127: # Goroutines for completed parallel subtests should exit immediately, # not block until earlier subtests have finished. [short] skip ! go test . stdout 'panic: slow failure' ! stdout '\[chan send' -- go.mod -- module golang.org/issue45127 go 1.16 -- issue45127_test.go -- package main import ( "fmt" "runtime" "runtime/debug" "sync" "testing" ) func TestTestingGoroutineLeak(t *testing.T) { debug.SetTraceback("all") var wg sync.WaitGroup const nFast = 10 t.Run("slow", func(t *testing.T) { t.Parallel() wg.Wait() for i := 0; i < nFast; i++ { // If the subtest goroutines are going to park on the channel // send, allow them to park now. If they're not going to park, // make sure they have had a chance to run to completion so // that they aren't spuriously parked when we panic. runtime.Gosched() } panic("slow failure") }) wg.Add(nFast) for i := 0; i < nFast; i++ { t.Run(fmt.Sprintf("leaky%d", i), func(t *testing.T) { t.Parallel() wg.Done() }) } }