Open pmalek opened 1 year ago
t.Helper
occurs in the child goroutine the parent may have already returned.I noticed that the following change to parallelTestHelper(t *T)
causes TestTBHelperParallel(t *T)
to fail with a similar result:
diff --git a/src/testing/helperfuncs_test.go b/src/testing/helperfuncs_test.go
index b63bc91ac2..5e90ce7fe7 100644
--- a/src/testing/helperfuncs_test.go
+++ b/src/testing/helperfuncs_test.go
@@ -90,7 +90,8 @@ func parallelTestHelper(t *T) {
for i := 0; i < 5; i++ {
wg.Add(1)
go func() {
- notHelperCallingHelper(t, "parallel")
+ t.Helper()
+ t.Error("parallel")
wg.Done()
}()
}
$ godevel test -v -test.run TestTBHelperParallel
=== RUN TestTBHelperParallel
helper_test.go:74: got output line "asm_arm64.s:1172: parallel"; want "helperfuncs_test.go:21: parallel"
--- FAIL: TestTBHelperParallel (0.00s)
FAIL
exit status 1
FAIL testing 0.317s
Is this failure unexpected, too?
go env
Output$ godevel env GO111MODULE="" GOARCH="arm64" GOBIN="" GOCACHE="/Users/kevherro/Library/Caches/go-build" GOENV="/Users/kevherro/Library/Application Support/go/env" GOEXE="" GOEXPERIMENT="" GOFLAGS="" GOHOSTARCH="arm64" GOHOSTOS="darwin" GOINSECURE="" GOMODCACHE="/Users/kevherro/go/pkg/mod" GONOPROXY="" GONOSUMDB="" GOOS="darwin" GOPATH="/Users/kevherro/go" GOPRIVATE="" GOPROXY="https://goproxy.io,direct" GOROOT="/Users/kevherro/golang.org" GOSUMDB="sum.golang.org" GOTMPDIR="" GOTOOLDIR="/Users/kevherro/golang.org/pkg/tool/darwin_arm64" GOVCS="" GOVERSION="devel go1.21-99bc53f5e8 Mon Feb 20 02:28:50 2023 +0000" GCCGO="gccgo" AR="ar" CC="clang" CXX="clang++" CGO_ENABLED="1" GOMOD="/Users/kevherro/golang.org/src/go.mod" GOWORK="" CGO_CFLAGS="-O2 -g" CGO_CPPFLAGS="" CGO_CXXFLAGS="-O2 -g" CGO_FFLAGS="-O2 -g" CGO_LDFLAGS="-O2 -g" PKG_CONFIG="pkg-config" GOGCCFLAGS="-fPIC -arch arm64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/ck/5sb0xvts6kg81fwzdbtrd2cc0000gr/T/go-build1818295499=/tmp/go-build -gno-record-gcc-switches -fno-common"
Change https://go.dev/cl/477495 mentions this issue: testing: log the call site file name of t.Helper() when called in a goroutine
What version of Go are you using (
go version
)?Does this issue reproduce with the latest release?
1.20.1 is the latest release at the moment.
What operating system and processor architecture are you using (
go env
)?go env
OutputWhat did you do?
Calling
t.Helper()
in helper that spawns a goroutine that callst.Log()
in that goroutine doesn't account for thet.Helper()
call - that is expected, not the samefunc
.Calling
t.Helper()
andt.Log()
inside the goroutine spawned in a function logs asm related file name - unexpected.What did you expect to see?
What did you see instead?