99dc2a1859
Change the 'PrepareForCoverageBuild' helper function to provide more sensible defaults in the case where Go packages are listed on the command line (e.g. cases such as "go run -cover mumble.go"). With the old implementation, if module mode was enabled, we would only instrument packages in the main module, meaning that if you did something like this: $ ls go.mod go.mod $ GOCOVERDATA=/tmp/cov go run -cover testdata/somefile.go $ no coverage profiles would be generated at all. This is due to the fact that the pseudo-package created by the Go command internally when building "somefile.go" is not considered part of the main module. This patch moves the default to "packages explicitly mentioned on the command line, plus packages in the main module", which will make more sense to users passing specific packages and *.go files on the command line. Examples: // Here cmd/compile is part the Go standard library + commands // (which we exclude from instrumentation by default), but since // 'cmd/compile' is mentioned on the command line, we will instrument // just that single package (not any of its deps). $ cd $GOROOT/src $ go build -o gc.exe -cover cmd/compile $ GOCOVERDATA=/tmp/cov ./gc.exe ... ... $ // Here we're running a Go file named on the command line, where // the pseudo-package for the command line is not part of the // main module, but it makes sense to instrument it anyhow. $ cd ~/go/k8s.io/kubernetes $ GOCOVERDATA=/tmp/cov go run -cover test/typecheck/testdata/bad/bad.go ... $ This patch also simplifies the logic and improves flow/comments in in the helper function PrepareForCoverageBuild. Change-Id: Id8fc8571157dac8c09e44cc73baa05aeba1640ca Reviewed-on: https://go-review.googlesource.com/c/go/+/445918 TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Bryan Mills <bcmills@google.com> Reviewed-by: Cherry Mui <cherryyz@google.com> Run-TryBot: Than McIntosh <thanm@google.com> |
||
---|---|---|
.github | ||
api | ||
doc | ||
lib/time | ||
misc | ||
src | ||
test | ||
.gitattributes | ||
.gitignore | ||
codereview.cfg | ||
CONTRIBUTING.md | ||
LICENSE | ||
PATENTS | ||
README.md | ||
SECURITY.md |
The Go Programming Language
Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.
Gopher image by Renee French, licensed under Creative Commons 3.0 Attributions license.
Our canonical Git repository is located at https://go.googlesource.com/go. There is a mirror of the repository at https://github.com/golang/go.
Unless otherwise noted, the Go source files are distributed under the BSD-style license found in the LICENSE file.
Download and Install
Binary Distributions
Official binary distributions are available at https://go.dev/dl/.
After downloading a binary release, visit https://go.dev/doc/install for installation instructions.
Install From Source
If a binary distribution is not available for your combination of operating system and architecture, visit https://go.dev/doc/install/source for source installation instructions.
Contributing
Go is the work of thousands of contributors. We appreciate your help!
To contribute, please read the contribution guidelines at https://go.dev/doc/contribute.
Note that the Go project uses the issue tracker for bug reports and proposals only. See https://go.dev/wiki/Questions for a list of places to ask questions about the Go language.