mirror of
https://github.com/golang/go
synced 2024-11-26 21:21:34 -07:00
cmd/go: ignore coverpkg match on sync/atomic in atomic coverage mode
Otherwise we get into a dependency loop as we try to apply coverage analysis to sync/atomic when the coverage analysis itself requires sync/atomic. Fixes #23694 Change-Id: I3a74ef3881ec5c6197ed348acc7f9e175417f6c7 Reviewed-on: https://go-review.googlesource.com/91875 Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
This commit is contained in:
parent
10d096fec2
commit
e6756ec149
@ -5686,3 +5686,16 @@ func TestCpuprofileTwice(t *testing.T) {
|
||||
tg.run("test", "-o="+bin, "-cpuprofile="+out, "x")
|
||||
tg.mustExist(out)
|
||||
}
|
||||
|
||||
// Issue 23694.
|
||||
func TestAtomicCoverpkgAll(t *testing.T) {
|
||||
tg := testgo(t)
|
||||
defer tg.cleanup()
|
||||
tg.parallel()
|
||||
|
||||
tg.tempFile("src/x/x.go", `package x; import _ "sync/atomic"; func F() {}`)
|
||||
tg.tempFile("src/x/x_test.go", `package x; import "testing"; func TestF(t *testing.T) { F() }`)
|
||||
tg.setenv("GOPATH", tg.path("."))
|
||||
tg.run("test", "-coverpkg=all", "-race", "x")
|
||||
tg.run("test", "-coverpkg=all", "-covermode=atomic", "x")
|
||||
}
|
||||
|
@ -659,6 +659,15 @@ func runTest(cmd *base.Command, args []string) {
|
||||
haveMatch = true
|
||||
}
|
||||
}
|
||||
|
||||
// Silently ignore attempts to run coverage on
|
||||
// sync/atomic when using atomic coverage mode.
|
||||
// Atomic coverage mode uses sync/atomic, so
|
||||
// we can't also do coverage on it.
|
||||
if testCoverMode == "atomic" && p.Standard && p.ImportPath == "sync/atomic" {
|
||||
continue
|
||||
}
|
||||
|
||||
if haveMatch {
|
||||
testCoverPkgs = append(testCoverPkgs, p)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user