aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean de Klerk <deklerk@google.com>2020-06-01 12:19:05 -0600
committerDmitri Shuralyov <dmitshur@golang.org>2020-07-16 18:22:52 +0000
commit3445c3512b1db3915f0eaebaa4b4ee9b98d6966f (patch)
tree11fe7b6e5f423260323c9c0565cd8d1e6bb07e1d
parent4298b46e23c0b37d9ab32eaf109b15d55d66667e (diff)
downloadgo-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.txt39
-rw-r--r--src/testing/testing.go11
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