cmd/go: remove ListModules call in runGet

ListModules was used to download .info files so that 'go list -m all'
would succeed later when offline. However, 'go list -m all' may
already fail when offline after 'go mod tidy', so it doesn't make
sense to add complexity to 'go get'.

Instead, remove the ListModules call and fix the test that
accidentally depended on it.

For #42723

Change-Id: I692597cf5ca15c23fa6fc9d2bac4b6e044299482
Reviewed-on: https://go-review.googlesource.com/c/go/+/271577
Trust: Jay Conrod <jayconrod@google.com>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
This commit is contained in:
Jay Conrod 2020-11-19 10:56:35 -05:00
parent cb3f84ad25
commit 9264067a41
2 changed files with 6 additions and 15 deletions

View file

@ -466,21 +466,6 @@ func runGet(ctx context.Context, cmd *base.Command, args []string) {
modload.AllowWriteGoMod()
modload.WriteGoMod()
modload.DisallowWriteGoMod()
// Ensure .info files are cached for each module in the build list.
// This ensures 'go list -m all' can succeed later if offline.
// 'go get' only loads .info files for queried versions. 'go list -m' needs
// them to add timestamps to the output.
//
// This is best effort since build commands don't need .info files to load
// the build list.
//
// TODO(golang.org/issue/40775): ListModules resets modload.loader, which
// contains information about direct dependencies that WriteGoMod uses.
// Refactor to avoid these kinds of global side effects.
if modload.HasModRoot() {
modload.ListModules(ctx, []string{"all"}, false, false, false)
}
}
// parseArgs parses command-line arguments and reports errors.

View file

@ -18,6 +18,12 @@ env GOPRIVATE='*/quote,*/*mple*,golang.org/x'
env GONOPROXY=none # that is, proxy all despite GOPRIVATE
go get -d rsc.io/quote
# Download .info files needed for 'go list -m all' later.
# TODO(#42723): either 'go list -m' should not read these files,
# or 'go get' and 'go mod tidy' should download them.
go list -m all
stdout '^golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c$'
# When GOPROXY is not empty but contains no entries, an error should be reported.
env GOPROXY=','
! go get -d golang.org/x/text