From: Ian Lance Taylor Date: Tue, 8 Aug 2017 22:50:43 +0000 (-0700) Subject: testing: don't fail all tests after racy test failure X-Git-Tag: go1.10beta1~1533 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=a1371756c368e4d85cfb84ac8ffc53180aa4d2f2;p=gostls13.git testing: don't fail all tests after racy test failure 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: I7bfdf281f90e045146c92444f1370d55c45221d4 Reviewed-on: https://go-review.googlesource.com/54050 Reviewed-by: Joe Tsai Run-TryBot: Joe Tsai TryBot-Result: Gobot Gobot --- diff --git a/src/runtime/race/output_test.go b/src/runtime/race/output_test.go index e73e6b3bfc..13dfc33b47 100644 --- a/src/runtime/race/output_test.go +++ b/src/runtime/race/output_test.go @@ -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`}, } diff --git a/src/testing/testing.go b/src/testing/testing.go index 02b2d730eb..93297b2dca 100644 --- a/src/testing/testing.go +++ b/src/testing/testing.go @@ -697,8 +697,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") }