diff options
author | Jean de Klerk <deklerk@google.com> | 2020-06-01 12:19:05 -0600 |
---|---|---|
committer | Dmitri Shuralyov <dmitshur@golang.org> | 2020-07-16 18:22:52 +0000 |
commit | 3445c3512b1db3915f0eaebaa4b4ee9b98d6966f (patch) | |
tree | 11fe7b6e5f423260323c9c0565cd8d1e6bb07e1d | |
parent | 4298b46e23c0b37d9ab32eaf109b15d55d66667e (diff) | |
download | go-3445c3512b1db3915f0eaebaa4b4ee9b98d6966f.tar.gz go-3445c3512b1db3915f0eaebaa4b4ee9b98d6966f.zip |
[release-branch.go1.14] testing: capture testname on --- PASS and --- FAIL lines
This fixes an issue raised at https://github.com/golang/go/issues/38458#issuecomment-635617670
in which --- PASS and --- FAIL lines would not trigger --- CONT lines
of other tests.
Updates #38458.
For #39308.
Change-Id: I0d8cc54d682a370d0a6ea6816a11b2e462a92efe
Reviewed-on: https://go-review.googlesource.com/c/go/+/235997
Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
Reviewed-on: https://go-review.googlesource.com/c/go/+/242058
Reviewed-by: Jean de Klerk <deklerk@google.com>
Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com>
Run-TryBot: Dmitri Shuralyov <dmitshur@golang.org>
-rw-r--r-- | src/cmd/go/testdata/script/test_chatty_parallel_success_sleepy.txt | 39 | ||||
-rw-r--r-- | src/testing/testing.go | 11 |
2 files changed, 44 insertions, 6 deletions
diff --git a/src/cmd/go/testdata/script/test_chatty_parallel_success_sleepy.txt b/src/cmd/go/testdata/script/test_chatty_parallel_success_sleepy.txt new file mode 100644 index 0000000000..5952a87bea --- /dev/null +++ b/src/cmd/go/testdata/script/test_chatty_parallel_success_sleepy.txt @@ -0,0 +1,39 @@ +# 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_paralell_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") +} diff --git a/src/testing/testing.go b/src/testing/testing.go index 787caf1c83..75f1b54f50 100644 --- a/src/testing/testing.go +++ b/src/testing/testing.go @@ -348,15 +348,14 @@ func (p *testPrinter) Print(testName, out string) { } func (p *testPrinter) Fprint(w io.Writer, testName, out string) { - if !p.chatty || strings.HasPrefix(out, "--- PASS") || strings.HasPrefix(out, "--- FAIL") { - fmt.Fprint(w, out) - return - } - p.lastNameMu.Lock() defer p.lastNameMu.Unlock() - if strings.HasPrefix(out, "=== CONT") || strings.HasPrefix(out, "=== RUN") { + if !p.chatty || + strings.HasPrefix(out, "--- PASS") || + strings.HasPrefix(out, "--- FAIL") || + strings.HasPrefix(out, "=== CONT") || + strings.HasPrefix(out, "=== RUN") { p.lastName = testName fmt.Fprint(w, out) return |