mirror of
https://github.com/golang/go
synced 2024-11-24 07:50:13 -07:00
cmd/go: remove arbitrary sleep in TestScript/test_chatty_parallel_success_sleepy
(Also rename it to no longer describe itself in terms of sleeping.) This test previously relied on the scheduler to wake up a goroutine to write the "--- PASS: TestFast" line within 100ms of TestFast actually finishing. On some platforms, even that long a delay is apparently too short. Instead, we now use a deterministic "=== RUN" line instead of a timing-dependent "--- PASS" line to interrupt the output. Fixes #51221 Change-Id: I3997640fb7577e29e3866a82d4d49a3a70a4b033 Reviewed-on: https://go-review.googlesource.com/c/go/+/386154 Trust: Bryan Mills <bcmills@google.com> Run-TryBot: Bryan Mills <bcmills@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
parent
ca1e509552
commit
1ac1658642
41
src/cmd/go/testdata/script/test_chatty_parallel_success_run.txt
vendored
Normal file
41
src/cmd/go/testdata/script/test_chatty_parallel_success_run.txt
vendored
Normal file
@ -0,0 +1,41 @@
|
||||
# Run parallel chatty tests. Assert on CONT lines. This test makes sure that
|
||||
# multiple parallel outputs have the appropriate CONT lines between them.
|
||||
go test -parallel 3 chatty_parallel -v
|
||||
|
||||
stdout '=== RUN TestInterruptor/interruption\n=== CONT TestLog\n chatty_parallel_test.go:28: this is the second TestLog log\n--- PASS: TestLog \([0-9.]{4}s\)'
|
||||
|
||||
-- go.mod --
|
||||
module chatty_parallel
|
||||
|
||||
go 1.18
|
||||
-- chatty_parallel_test.go --
|
||||
package chatty_parallel_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
var (
|
||||
afterFirstLog = make(chan struct{})
|
||||
afterSubTest = make(chan struct{})
|
||||
afterSecondLog = make(chan struct{})
|
||||
)
|
||||
|
||||
func TestInterruptor(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
<-afterFirstLog
|
||||
t.Run("interruption", func (t *testing.T) {})
|
||||
close(afterSubTest)
|
||||
<-afterSecondLog // Delay the "PASS: TestInterruptor" line until after "CONT TestLog".
|
||||
}
|
||||
|
||||
func TestLog(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
t.Logf("this is the first TestLog log")
|
||||
close(afterFirstLog)
|
||||
<-afterSubTest
|
||||
t.Logf("this is the second TestLog log")
|
||||
close(afterSecondLog)
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
# Run parallel chatty tests. Assert on CONT lines. This test makes sure that
|
||||
# multiple parallel outputs have the appropriate CONT lines between them.
|
||||
go test -parallel 3 chatty_parallel_test.go -v
|
||||
|
||||
stdout '--- PASS: TestFast \([0-9.]{4}s\)\n=== CONT TestSlow\n chatty_parallel_test.go:31: this is the second TestSlow log\n--- PASS: TestSlow \([0-9.]{4}s\)'
|
||||
|
||||
-- chatty_parallel_test.go --
|
||||
package chatty_parallel_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
var (
|
||||
run = make(chan struct{})
|
||||
afterFirstLog = make(chan struct{})
|
||||
afterPass = make(chan struct{})
|
||||
)
|
||||
|
||||
func TestFast(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
<-afterFirstLog
|
||||
t.Cleanup(func() {
|
||||
close(afterPass)
|
||||
})
|
||||
}
|
||||
|
||||
func TestSlow(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
t.Logf("this is the first TestSlow log")
|
||||
close(afterFirstLog)
|
||||
|
||||
<-afterPass
|
||||
time.Sleep(100 * time.Millisecond)
|
||||
t.Logf("this is the second TestSlow log")
|
||||
}
|
Loading…
Reference in New Issue
Block a user