]> Cypherpunks repositories - gostls13.git/commitdiff
[release-branch.go1.14] testing: capture testname on --- PASS and --- FAIL lines
authorJean de Klerk <deklerk@google.com>
Mon, 1 Jun 2020 18:19:05 +0000 (12:19 -0600)
committerDmitri Shuralyov <dmitshur@golang.org>
Thu, 16 Jul 2020 18:22:52 +0000 (18:22 +0000)
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>

src/cmd/go/testdata/script/test_chatty_parallel_success_sleepy.txt [new file with mode: 0644]
src/testing/testing.go

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 (file)
index 0000000..5952a87
--- /dev/null
@@ -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")
+}
index 787caf1c832c253423c847ad1e84828961270c5d..75f1b54f500870751832ad2c0724e23b3d688119 100644 (file)
@@ -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