aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThan McIntosh <thanm@google.com>2023-01-13 16:46:49 -0500
committerThan McIntosh <thanm@google.com>2023-01-17 16:41:24 +0000
commit6cb8c43b842daffe628e8ee7a94ea3b1ba17299d (patch)
tree444591884ce2c94002216e5a2415c6ba6b55e496
parent02ed0e5e67530e6b041989d55048ce373dc60327 (diff)
downloadgo-6cb8c43b842daffe628e8ee7a94ea3b1ba17299d.tar.gz
go-6cb8c43b842daffe628e8ee7a94ea3b1ba17299d.zip
cmd/go: include coverage build flags for "go list"
This patch ensures that the go command's "list" subcommand accepts coverage-related build options, which were incorrectly left out when "go build -cover" was rolled out. This is needed in order to do things like check the staleness of an installed cover-instrumented target. Fixes #57785. Change-Id: I140732ff1e6b83cd9c453701bb8199b333fc0f2e Reviewed-on: https://go-review.googlesource.com/c/go/+/462116 Reviewed-by: Bryan Mills <bcmills@google.com> Reviewed-by: Russ Cox <rsc@golang.org> Run-TryBot: Than McIntosh <thanm@google.com> TryBot-Result: Gopher Robot <gobot@golang.org>
-rw-r--r--src/cmd/go/internal/list/list.go3
-rw-r--r--src/cmd/go/testdata/script/cover_list.txt28
2 files changed, 31 insertions, 0 deletions
diff --git a/src/cmd/go/internal/list/list.go b/src/cmd/go/internal/list/list.go
index 72201850b2..811d659ba3 100644
--- a/src/cmd/go/internal/list/list.go
+++ b/src/cmd/go/internal/list/list.go
@@ -336,6 +336,9 @@ For more about modules, see https://golang.org/ref/mod.
func init() {
CmdList.Run = runList // break init cycle
work.AddBuildFlags(CmdList, work.DefaultBuildFlags)
+ if cfg.Experiment != nil && cfg.Experiment.CoverageRedesign {
+ work.AddCoverFlags(CmdList, nil)
+ }
CmdList.Flag.Var(&listJsonFields, "json", "")
}
diff --git a/src/cmd/go/testdata/script/cover_list.txt b/src/cmd/go/testdata/script/cover_list.txt
new file mode 100644
index 0000000000..c66c087793
--- /dev/null
+++ b/src/cmd/go/testdata/script/cover_list.txt
@@ -0,0 +1,28 @@
+
+# This test is intended to verify that "go list" accepts coverage related
+# build arguments (such as -cover, -covermode). See issue #57785.
+
+[short] skip
+[!GOEXPERIMENT:coverageredesign] skip
+
+env GOBIN=$WORK/bin
+
+# Install a target and then do an ordinary staleness check on it.
+go install m/example
+! stale m/example
+
+# Run a second staleness check with "-cover" as a build flag. The
+# installed target should indeed be stale, since we didn't build it
+# with -cover.
+stale -cover m/example
+
+-- go.mod --
+module m
+
+go 1.20
+-- example/main.go --
+package main
+
+func main() {
+ println("hi mom")
+}