aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJay Conrod <jayconrod@google.com>2020-09-11 09:31:30 -0400
committerJay Conrod <jayconrod@google.com>2020-09-11 15:53:52 +0000
commitb459bc8152210c14b66e23351690ff774cd68d2c (patch)
treebc5d92b253e1a185d76d56519e69366ba958acdb
parent1ed4f12f4a6b9d783cf9a6fc3a292a433b8539c6 (diff)
downloadgo-b459bc8152210c14b66e23351690ff774cd68d2c.tar.gz
go-b459bc8152210c14b66e23351690ff774cd68d2c.zip
cmd/go: make 'go mod download' update go.sum after downloads are complete
'go mod download' calls WriteGoMod once via modload.ListModules when it loads the build list. This saves sums for go.mod files needed by MVS, but the write occurs before any zip files are downloaded. With this change, 'go mod download' calls WriteGoMod again (and thus, modfetch.WriteGoSum) after downloading and verifying module zip files, so the sums of the zip files will be saved, too. Fixes #41341 Change-Id: I7d56754aa255256ed45fd93cb154c2e6ea5f45a9 Reviewed-on: https://go-review.googlesource.com/c/go/+/254357 Run-TryBot: Jay Conrod <jayconrod@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/download.go3
-rw-r--r--src/cmd/go/testdata/script/mod_download.txt18
2 files changed, 21 insertions, 0 deletions
diff --git a/src/cmd/go/internal/modcmd/download.go b/src/cmd/go/internal/modcmd/download.go
index 0ea5638e70..6227fd9f33 100644
--- a/src/cmd/go/internal/modcmd/download.go
+++ b/src/cmd/go/internal/modcmd/download.go
@@ -187,4 +187,7 @@ func runDownload(ctx context.Context, cmd *base.Command, args []string) {
}
base.ExitIfErrors()
}
+
+ // Update go.mod and especially go.sum if needed.
+ modload.WriteGoMod()
}
diff --git a/src/cmd/go/testdata/script/mod_download.txt b/src/cmd/go/testdata/script/mod_download.txt
index b9bf67cad5..c53bbe4567 100644
--- a/src/cmd/go/testdata/script/mod_download.txt
+++ b/src/cmd/go/testdata/script/mod_download.txt
@@ -107,6 +107,14 @@ stderr '^go mod download: skipping argument m that resolves to the main module\n
go mod download m@latest
stderr '^go mod download: skipping argument m@latest that resolves to the main module\n'
+# download updates go.mod and populates go.sum
+cd update
+! exists go.sum
+go mod download
+grep '^rsc.io/sampler v1.3.0 ' go.sum
+go list -m rsc.io/sampler
+stdout '^rsc.io/sampler v1.3.0$'
+
# allow go mod download without go.mod
env GO111MODULE=auto
rm go.mod
@@ -122,3 +130,13 @@ stderr 'get '$GOPROXY
-- go.mod --
module m
+
+-- update/go.mod --
+module m
+
+go 1.16
+
+require (
+ rsc.io/quote v1.5.2
+ rsc.io/sampler v1.2.1 // older version than in build list
+)