From 6833d1b43643d8102be45cb6b4ee5912cafed8e7 Mon Sep 17 00:00:00 2001 From: Rob Pike Date: Fri, 6 Sep 2013 15:54:26 +1000 Subject: [PATCH] cmd/go: don't leave test binary around for coverage It's not needed to analyze coverage data. Fixes #6120 R=golang-dev, adg CC=golang-dev https://golang.org/cl/13343050 --- src/cmd/go/doc.go | 9 ++++++--- src/cmd/go/test.go | 7 ++++--- src/cmd/go/testflag.go | 1 + 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/cmd/go/doc.go b/src/cmd/go/doc.go index 2fd5d79e7a..7af623ae1b 100644 --- a/src/cmd/go/doc.go +++ b/src/cmd/go/doc.go @@ -269,7 +269,7 @@ List packages Usage: - go list [-e] [-f format] [-json] [-tags 'tag list'] [packages] + go list [-e] [-race] [-f format] [-json] [-tags 'tag list'] [packages] List lists the packages named by the import paths, one per line. @@ -345,6 +345,9 @@ a non-nil Error field; other information may or may not be missing The -tags flag specifies a list of build tags, like in the 'go build' command. +The -race flag causes the package data to include the dependencies +required by the race detector. + For more about specifying packages, see 'go help packages'. @@ -809,8 +812,8 @@ will compile the test binary and then run it as pkg.test -test.v -test.cpuprofile=prof.out -dir=testdata -update -The test flags that generate profiles also leave the test binary in pkg.test -for use when analyzing the profiles. +The test flags that generate profiles (other than for coverage) also +leave the test binary in pkg.test for use when analyzing the profiles. Flags not recognized by 'go test' must be placed after any specified packages. diff --git a/src/cmd/go/test.go b/src/cmd/go/test.go index 002758c3b1..2d5557e65e 100644 --- a/src/cmd/go/test.go +++ b/src/cmd/go/test.go @@ -213,8 +213,8 @@ will compile the test binary and then run it as pkg.test -test.v -test.cpuprofile=prof.out -dir=testdata -update -The test flags that generate profiles also leave the test binary in pkg.test -for use when analyzing the profiles. +The test flags that generate profiles (other than for coverage) also +leave the test binary in pkg.test for use when analyzing the profiles. Flags not recognized by 'go test' must be placed after any specified packages. `, @@ -272,6 +272,7 @@ var ( testCoverPaths []string // -coverpkg flag testCoverPkgs []*Package // -coverpkg flag testProfile bool // some profiling flag + testNeedBinary bool // profile needs to keep binary around testI bool // -i flag testV bool // -v flag testFiles []string // -file flag(s) TODO: not respected @@ -728,7 +729,7 @@ func (b *builder) test(p *Package) (buildAction, runAction, printAction *action, a.target = filepath.Join(testDir, testBinary) + exeSuffix pmainAction := a - if testC || testProfile { + if testC || testNeedBinary { // -c or profiling flag: create action to copy binary to ./test.out. runAction = &action{ f: (*builder).install, diff --git a/src/cmd/go/testflag.go b/src/cmd/go/testflag.go index 1e0724a993..d931d35b6a 100644 --- a/src/cmd/go/testflag.go +++ b/src/cmd/go/testflag.go @@ -181,6 +181,7 @@ func testFlags(args []string) (packageNames, passToTest []string) { testTimeout = value case "blockprofile", "cpuprofile", "memprofile": testProfile = true + testNeedBinary = true case "coverpkg": testCover = true if value == "" {