summaryrefslogtreecommitdiffstats
path: root/src/cmd/go/testdata/script/test_buildvcs.txt
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/go/testdata/script/test_buildvcs.txt')
-rw-r--r--src/cmd/go/testdata/script/test_buildvcs.txt94
1 files changed, 94 insertions, 0 deletions
diff --git a/src/cmd/go/testdata/script/test_buildvcs.txt b/src/cmd/go/testdata/script/test_buildvcs.txt
new file mode 100644
index 0000000..a669966
--- /dev/null
+++ b/src/cmd/go/testdata/script/test_buildvcs.txt
@@ -0,0 +1,94 @@
+# https://go.dev/issue/51723: 'go test' should not stamp VCS metadata
+# in the build settings. (It isn't worth the latency hit, given that
+# test binaries are almost never distributed to users.)
+
+[short] skip
+[!exec:git] skip
+
+env GOFLAGS=-buildvcs # override default -buildvcs=auto in GOFLAGS, as a user might
+
+exec git init
+
+# The test binaries should not have VCS settings stamped.
+# (The test itself verifies that.)
+go test . ./testonly
+
+
+# Remove 'git' from $PATH. The test should still build.
+# This ensures that we aren't loading VCS metadata that
+# we subsequently throw away.
+env PATH=''
+env path=''
+
+# Compiling the test should not require the VCS tool.
+go test -c -o $devnull .
+
+
+# When listing a main package, in general we need its VCS metadata to determine
+# the .Stale and .StaleReason fields.
+! go list .
+stderr '^go: missing Git command\. See https://golang\.org/s/gogetcmd\nerror obtaining VCS status: .*\n\tUse -buildvcs=false to disable VCS stamping.'
+
+# Adding the -test flag should be strictly additive — it should not suppress the error.
+! go list -test .
+stderr '^go: missing Git command\. See https://golang\.org/s/gogetcmd\nerror obtaining VCS status: .*\n\tUse -buildvcs=false to disable VCS stamping.'
+
+# Adding the suggested flag should suppress the error.
+go list -test -buildvcs=false .
+! stderr .
+
+
+# Since the ./testonly package can't produce an actual binary, we shouldn't
+# invoke a VCS tool to compute a build stamp when listing it.
+go list ./testonly
+! stderr .
+go list -test ./testonly
+! stderr .
+
+
+-- go.mod --
+module example
+
+go 1.18
+-- example.go --
+package main
+-- example_test.go --
+package main
+
+import (
+ "runtime/debug"
+ "strings"
+ "testing"
+)
+
+func TestDetail(t *testing.T) {
+ bi, ok := debug.ReadBuildInfo()
+ if !ok {
+ t.Fatal("BuildInfo not present")
+ }
+ for _, s := range bi.Settings {
+ if strings.HasPrefix(s.Key, "vcs.") {
+ t.Fatalf("unexpected VCS setting: %s=%s", s.Key, s.Value)
+ }
+ }
+}
+-- testonly/main_test.go --
+package main
+
+import (
+ "runtime/debug"
+ "strings"
+ "testing"
+)
+
+func TestDetail(t *testing.T) {
+ bi, ok := debug.ReadBuildInfo()
+ if !ok {
+ t.Fatal("BuildInfo not present")
+ }
+ for _, s := range bi.Settings {
+ if strings.HasPrefix(s.Key, "vcs.") {
+ t.Fatalf("unexpected VCS setting: %s=%s", s.Key, s.Value)
+ }
+ }
+}