From 9761a162f066911a76fb7b45c383490ca3bcdcc8 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Thu, 29 Mar 2018 06:31:38 -0700 Subject: [PATCH] cmd/go: don't try to initialize cover profile for go test -c Using go test -c makes you responsible for managing and merging the coverage profile yourself. Fixes #24588 Change-Id: I2037a91ceb904f9f35d76c7b5e5fae6bcbed4e46 Reviewed-on: https://go-review.googlesource.com/103395 Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot Reviewed-by: Brad Fitzpatrick --- src/cmd/go/go_test.go | 11 +++++++++++ src/cmd/go/internal/test/cover.go | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/cmd/go/go_test.go b/src/cmd/go/go_test.go index 6bf826ad5bf185..c4939ed1d9d7c4 100644 --- a/src/cmd/go/go_test.go +++ b/src/cmd/go/go_test.go @@ -2622,6 +2622,17 @@ func TestCoverageFunc(t *testing.T) { tg.grepStdoutNot(`\tf\t*[0-9]`, "reported coverage for assembly function f") } +// Issue 24588. +func TestCoverageDashC(t *testing.T) { + tg := testgo(t) + defer tg.cleanup() + tg.parallel() + tg.makeTempdir() + tg.setenv("GOPATH", filepath.Join(tg.pwd(), "testdata")) + tg.run("test", "-c", "-o", tg.path("coverdep"), "-coverprofile="+tg.path("no/such/dir/cover.out"), "coverdep") + tg.wantExecutable(tg.path("coverdep"), "go -test -c -coverprofile did not create executable") +} + func TestPluginNonMain(t *testing.T) { wd, err := os.Getwd() if err != nil { diff --git a/src/cmd/go/internal/test/cover.go b/src/cmd/go/internal/test/cover.go index 12538b46564215..9841791552dbbc 100644 --- a/src/cmd/go/internal/test/cover.go +++ b/src/cmd/go/internal/test/cover.go @@ -23,7 +23,7 @@ var coverMerge struct { // Using this function clears the profile in case it existed from a previous run, // or in case it doesn't exist and the test is going to fail to create it (or not run). func initCoverProfile() { - if testCoverProfile == "" { + if testCoverProfile == "" || testC { return } if !filepath.IsAbs(testCoverProfile) && testOutputDir != "" {