aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Crowgey <jcrowgey@uw.edu>2020-02-13 06:02:10 +0000
committerBryan C. Mills <bcmills@google.com>2020-02-26 14:31:35 +0000
commit26aadfa0442249d4b55d7135134eb7ec0a43a850 (patch)
tree53a9b20fa4ac37385b47ec3dd856dd32d341543d
parentcb74dcc172de2779a2f65ea830f687156c98ad50 (diff)
downloadgo-26aadfa0442249d4b55d7135134eb7ec0a43a850.tar.gz
go-26aadfa0442249d4b55d7135134eb7ec0a43a850.zip
cmd/vendor: create modules.txt even for unused deps
`go mod vendor` should create vendor/modules.txt even when the only deps in go.mod are unused. Fixes: #36580 Change-Id: I92a746d3f013bc2bdc3d2cec6e14b16f606c2edd GitHub-Last-Rev: ea39a1c62294f42e5e5aab049f466189de0fd42d GitHub-Pull-Request: golang/go#36920 Reviewed-on: https://go-review.googlesource.com/c/go/+/217135 Run-TryBot: Bryan C. Mills <bcmills@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com>
-rw-r--r--src/cmd/go/internal/modcmd/vendor.go5
-rw-r--r--src/cmd/go/testdata/script/mod_vendor_unused_only.txt17
2 files changed, 22 insertions, 0 deletions
diff --git a/src/cmd/go/internal/modcmd/vendor.go b/src/cmd/go/internal/modcmd/vendor.go
index 0c00d1222e..8509ceb7a8 100644
--- a/src/cmd/go/internal/modcmd/vendor.go
+++ b/src/cmd/go/internal/modcmd/vendor.go
@@ -123,6 +123,11 @@ func runVendor(cmd *base.Command, args []string) {
fmt.Fprintf(os.Stderr, "go: no dependencies to vendor\n")
return
}
+
+ if err := os.MkdirAll(vdir, 0777); err != nil {
+ base.Fatalf("go mod vendor: %v", err)
+ }
+
if err := ioutil.WriteFile(filepath.Join(vdir, "modules.txt"), buf.Bytes(), 0666); err != nil {
base.Fatalf("go mod vendor: %v", err)
}
diff --git a/src/cmd/go/testdata/script/mod_vendor_unused_only.txt b/src/cmd/go/testdata/script/mod_vendor_unused_only.txt
new file mode 100644
index 0000000000..839c6453cf
--- /dev/null
+++ b/src/cmd/go/testdata/script/mod_vendor_unused_only.txt
@@ -0,0 +1,17 @@
+# Ensure that we generate a vendor/modules.txt file even when the only
+# requirements in go.mod are unused. Regression test for
+# golang.org/issue/36580
+
+env GO111MODULE=on
+
+go mod vendor
+cmp go1.14-modules.txt vendor/modules.txt
+
+-- go.mod --
+module example.com/m
+go 1.14
+
+require example.com v1.0.0 // indirect
+-- go1.14-modules.txt --
+# example.com v1.0.0
+## explicit