Server : LiteSpeed System : Linux in-mum-web1333.main-hosting.eu 4.18.0-553.37.1.lve.el8.x86_64 #1 SMP Mon Feb 10 22:45:17 UTC 2025 x86_64 User : u141265441 ( 141265441) PHP Version : 8.4.3 Disable Function : system, exec, shell_exec, passthru, mysql_list_dbs, ini_alter, dl, symlink, link, chgrp, leak, popen, apache_child_terminate, virtual, mb_send_mail Directory : /proc/self/root/opt/golang/1.22.0/src/cmd/go/testdata/script/ |
# 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()
})
}
}