]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: warn on -race with -covermode=set.
authorDhananjay Nakrani <dhananjaynakrani@gmail.com>
Sat, 20 May 2017 02:52:59 +0000 (19:52 -0700)
committerBrad Fitzpatrick <bradfitz@golang.org>
Mon, 22 May 2017 19:59:28 +0000 (19:59 +0000)
Fixes #20435.

Change-Id: I15576f36b26d01642c1187325baea82d3077e578
Reviewed-on: https://go-review.googlesource.com/43777
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/cmd/go/go_test.go
src/cmd/go/internal/test/testflag.go

index d09b190781c5bf3ebd5a4984810165ff4c6f031b..ea31e4477909a7d6c06db36e128a99f4dbb0d290 100644 (file)
@@ -4120,3 +4120,21 @@ func TestCgoFlagContainsSpace(t *testing.T) {
        tg.cd(tg.path("src/cgo"))
        tg.run("run", "main.go")
 }
+
+// Issue #20435.
+func TestGoTestRaceCoverModeFailures(t *testing.T) {
+       if !canRace {
+               t.Skip("skipping because race detector not supported")
+       }
+
+       tg := testgo(t)
+       tg.parallel()
+       defer tg.cleanup()
+       tg.setenv("GOPATH", filepath.Join(tg.pwd(), "testdata"))
+
+       tg.run("test", "testrace")
+
+       tg.runFail("test", "-race", "-covermode=set", "testrace")
+       tg.grepStderr(`-covermode must be "atomic", not "set", when -race is enabled`, "-race -covermode=set was allowed")
+       tg.grepBothNot("PASS", "something passed")
+}
index fb76a34a77871ff5d5b4ab492a24558903f31320..bff8656a4c1d2ab9066d66494df8e63e46da2df7 100644 (file)
@@ -193,6 +193,10 @@ func testFlags(args []string) (packageNames, passToTest []string) {
                }
        }
 
+       if cfg.BuildRace && testCoverMode != "atomic" {
+               base.Fatalf(`-covermode must be "atomic", not %q, when -race is enabled`, testCoverMode)
+       }
+
        // Tell the test what directory we're running in, so it can write the profiles there.
        if testProfile && outputDir == "" {
                dir, err := os.Getwd()