]> Cypherpunks repositories - gostls13.git/commitdiff
[release-branch.go1.9] testing: don't fail all tests after racy test failure
authorIan Lance Taylor <iant@golang.org>
Fri, 18 Aug 2017 19:58:08 +0000 (12:58 -0700)
committerIan Lance Taylor <iant@golang.org>
Fri, 18 Aug 2017 21:10:46 +0000 (21:10 +0000)
The code was adding race.Errors to t.raceErrors before checking
Failed, but Failed was using t.raceErrors+race.Errors. We don't want
to change Failed, since that would affect tests themselves, so modify
the harness to not unnecessarily change t.raceErrors.

Updates #19851
Fixes #21338

Change-Id: I483f27c68c340928f1cbdef160abc0a5716efb5d
Reviewed-on: https://go-review.googlesource.com/57151
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
src/runtime/race/output_test.go
src/testing/testing.go

index e73e6b3bfc14c204edc406131cca3af71a8f7fea..13dfc33b477b0cee05cc9eab13cda38e0ac885d1 100644 (file)
@@ -259,4 +259,25 @@ Goroutine [0-9] \(running\) created at:
   runtime\.newextram\(\)
       .*/runtime/proc.go:[0-9]+ \+0x[0-9,a-f]+
 ==================`},
+       {"second_test_passes", "test", "", "atexit_sleep_ms=0", `
+package main_test
+import "testing"
+func TestFail(t *testing.T) {
+       done := make(chan bool)
+       x := 0
+       go func() {
+               x = 42
+               done <- true
+       }()
+       x = 43
+       <-done
+}
+
+func TestPass(t *testing.T) {
+}
+`, `
+==================
+--- FAIL: TestFail \(0...s\)
+.*testing.go:.*: race detected during execution of test
+FAIL`},
 }
index 11af926c80f8e9b69cc893c8317358c5057355bd..3585af3fc46ad37cda61f7024600b057c0567df9 100644 (file)
@@ -695,8 +695,7 @@ func tRunner(t *T, fn func(t *T)) {
        // a call to runtime.Goexit, record the duration and send
        // a signal saying that the test is done.
        defer func() {
-               t.raceErrors += race.Errors()
-               if t.raceErrors > 0 {
+               if t.raceErrors+race.Errors() > 0 {
                        t.Errorf("race detected during execution of test")
                }