diff options
author | Russ Cox <rsc@golang.org> | 2016-11-02 21:40:47 -0400 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2016-11-03 18:19:49 +0000 |
commit | 43f954e09858449cc5f3650720e81b7e879ab349 (patch) | |
tree | b90e4449cb80a45e9ab3b95a69fe2efe54bc6a90 /src/runtime/race | |
parent | f3862742b67a84edf939f41276360ada4e7197a6 (diff) | |
download | go-43f954e09858449cc5f3650720e81b7e879ab349.tar.gz go-43f954e09858449cc5f3650720e81b7e879ab349.zip |
testing: mark tests and benchmarks failed if a race occurs during execution
Before:
$ go test -race -v -run TestRace
=== RUN TestRace
==================
WARNING: DATA RACE
Write at 0x00c420076420 by goroutine 7:
_/Users/rsc/go/src/cmd/go/testdata/src/testrace.TestRace.func1()
/Users/rsc/go/src/cmd/go/testdata/src/testrace/race_test.go:10 +0x3b
Previous write at 0x00c420076420 by goroutine 6:
_/Users/rsc/go/src/cmd/go/testdata/src/testrace.TestRace()
/Users/rsc/go/src/cmd/go/testdata/src/testrace/race_test.go:13 +0xcc
testing.tRunner()
/Users/rsc/go/src/testing/testing.go:656 +0x104
Goroutine 7 (running) created at:
_/Users/rsc/go/src/cmd/go/testdata/src/testrace.TestRace()
/Users/rsc/go/src/cmd/go/testdata/src/testrace/race_test.go:12 +0xbb
testing.tRunner()
/Users/rsc/go/src/testing/testing.go:656 +0x104
Goroutine 6 (running) created at:
testing.(*T).Run()
/Users/rsc/go/src/testing/testing.go:693 +0x536
testing.runTests.func1()
/Users/rsc/go/src/testing/testing.go:877 +0xaa
testing.tRunner()
/Users/rsc/go/src/testing/testing.go:656 +0x104
testing.runTests()
/Users/rsc/go/src/testing/testing.go:883 +0x4ac
testing.(*M).Run()
/Users/rsc/go/src/testing/testing.go:818 +0x1c3
main.main()
_/Users/rsc/go/src/cmd/go/testdata/src/testrace/_test/_testmain.go:42 +0x20f
==================
--- PASS: TestRace (0.00s)
PASS
Found 1 data race(s)
FAIL _/Users/rsc/go/src/cmd/go/testdata/src/testrace 1.026s
$
After:
$ go test -race -v -run TestRace
=== RUN TestRace
==================
WARNING: DATA RACE
Write at 0x00c420076420 by goroutine 7:
_/Users/rsc/go/src/cmd/go/testdata/src/testrace.TestRace.func1()
/Users/rsc/go/src/cmd/go/testdata/src/testrace/race_test.go:10 +0x3b
Previous write at 0x00c420076420 by goroutine 6:
_/Users/rsc/go/src/cmd/go/testdata/src/testrace.TestRace()
/Users/rsc/go/src/cmd/go/testdata/src/testrace/race_test.go:13 +0xcc
testing.tRunner()
/Users/rsc/go/src/testing/testing.go:656 +0x104
Goroutine 7 (running) created at:
_/Users/rsc/go/src/cmd/go/testdata/src/testrace.TestRace()
/Users/rsc/go/src/cmd/go/testdata/src/testrace/race_test.go:12 +0xbb
testing.tRunner()
/Users/rsc/go/src/testing/testing.go:656 +0x104
Goroutine 6 (running) created at:
testing.(*T).Run()
/Users/rsc/go/src/testing/testing.go:693 +0x536
testing.runTests.func1()
/Users/rsc/go/src/testing/testing.go:877 +0xaa
testing.tRunner()
/Users/rsc/go/src/testing/testing.go:656 +0x104
testing.runTests()
/Users/rsc/go/src/testing/testing.go:883 +0x4ac
testing.(*M).Run()
/Users/rsc/go/src/testing/testing.go:818 +0x1c3
main.main()
_/Users/rsc/go/src/cmd/go/testdata/src/testrace/_test/_testmain.go:42 +0x20f
==================
--- FAIL: TestRace (0.00s)
testing.go:609: race detected during execution of test
FAIL
FAIL _/Users/rsc/go/src/cmd/go/testdata/src/testrace 0.022s
$
Fixes #15972.
Change-Id: Idb15b8ab81d65637bb535c7e275595ca4a6e450e
Reviewed-on: https://go-review.googlesource.com/32615
Run-TryBot: Russ Cox <rsc@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Diffstat (limited to 'src/runtime/race')
-rw-r--r-- | src/runtime/race/output_test.go | 4 | ||||
-rw-r--r-- | src/runtime/race/race_test.go | 6 |
2 files changed, 6 insertions, 4 deletions
diff --git a/src/runtime/race/output_test.go b/src/runtime/race/output_test.go index 9158f0453c..2a2e3b79e5 100644 --- a/src/runtime/race/output_test.go +++ b/src/runtime/race/output_test.go @@ -184,8 +184,8 @@ func TestFail(t *testing.T) { } `, ` ================== -PASS -Found 1 data race\(s\) +--- FAIL: TestFail \(0.00s\) +.*testing.go:.*: race detected during execution of test FAIL`}, {"slicebytetostring_pc", "run", "", "atexit_sleep_ms=0", ` diff --git a/src/runtime/race/race_test.go b/src/runtime/race/race_test.go index 8f910bf008..8cdf52d102 100644 --- a/src/runtime/race/race_test.go +++ b/src/runtime/race/race_test.go @@ -173,9 +173,11 @@ func runTests(t *testing.T) ([]byte, error) { // (that's what is done for C++ ThreadSanitizer tests). This is issue #14119. cmd.Env = append(cmd.Env, "GOMAXPROCS=1", - "GORACE=suppress_equal_stacks=0 suppress_equal_addresses=0 exitcode=0", + "GORACE=suppress_equal_stacks=0 suppress_equal_addresses=0", ) - return cmd.CombinedOutput() + // There are races: we expect tests to fail and the exit code to be non-zero. + out, _ := cmd.CombinedOutput() + return out, nil } func TestIssue8102(t *testing.T) { |