aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBryan C. Mills <bcmills@google.com>2019-10-08 14:23:43 -0400
committerAlexander Rakoczy <alex@golang.org>2019-10-09 15:10:17 +0000
commit842a1e78c9533254d8d82a5571bdf24c0168beb3 (patch)
tree0fc7caf8f1e42b4da1ab24a476bc9263013c59c5
parent2f73eedd42b509e3aa262fb2846105d3b5cee986 (diff)
downloadgo-842a1e78c9533254d8d82a5571bdf24c0168beb3.tar.gz
go-842a1e78c9533254d8d82a5571bdf24c0168beb3.zip
[release-branch.go1.13] cmd/go: suppress more errors in package-to-module loading
In CL 197059, I suppressed errors if the target package was already found. However, that does not cover the case of passing a '/v2' module path to 'go get' when the module does not contain a package at its root. This CL is a minimal fix for that case, intended to be backportable to 1.13. (Longer term, I intend to rework the version-validation check to treat all mismatched paths as ErrNotExist.) Updates #34746 Fixes #34747 Change-Id: Ia963c2ea00fae424812b8f46a4d6c2c668252147 Reviewed-on: https://go-review.googlesource.com/c/go/+/199839 Run-TryBot: Bryan C. Mills <bcmills@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Jay Conrod <jayconrod@google.com> (cherry picked from commit 421d35cf69f4a18edf96004ba99c01e629a0f79f) Reviewed-on: https://go-review.googlesource.com/c/go/+/199997
-rw-r--r--src/cmd/go/internal/modload/query.go8
-rw-r--r--src/cmd/go/testdata/script/mod_get_major.txt5
2 files changed, 9 insertions, 4 deletions
diff --git a/src/cmd/go/internal/modload/query.go b/src/cmd/go/internal/modload/query.go
index 0359470d95..75c18f25cc 100644
--- a/src/cmd/go/internal/modload/query.go
+++ b/src/cmd/go/internal/modload/query.go
@@ -472,10 +472,10 @@ func queryPrefixModules(candidateModules []string, queryModule func(path string)
notExistErr = rErr
}
} else if err == nil {
- if len(found) > 0 {
- // golang.org/issue/34094: If we have already found a module
- // containing the target package, ignore errors for modules with
- // shorter paths.
+ if len(found) > 0 || noPackage != nil {
+ // golang.org/issue/34094: If we have already found a module that
+ // could potentially contain the target package, ignore unclassified
+ // errors for modules with shorter paths.
// golang.org/issue/34383 is a special case of this: if we have
// already found example.com/foo/v2@v2.0.0 with a matching go.mod
diff --git a/src/cmd/go/testdata/script/mod_get_major.txt b/src/cmd/go/testdata/script/mod_get_major.txt
index dd1cbe01a3..367ede9ded 100644
--- a/src/cmd/go/testdata/script/mod_get_major.txt
+++ b/src/cmd/go/testdata/script/mod_get_major.txt
@@ -13,6 +13,11 @@ go get -d vcs-test.golang.org/git/v3pkg.git/v3@v3.0.0
go list -m vcs-test.golang.org/git/v3pkg.git/v3
stdout '^vcs-test.golang.org/git/v3pkg.git/v3 v3.0.0$'
+go get -d vcs-test.golang.org/git/empty-v2-without-v1.git/v2@v2.0.0
+
+go list -m vcs-test.golang.org/git/empty-v2-without-v1.git/v2
+stdout '^vcs-test.golang.org/git/empty-v2-without-v1.git/v2 v2.0.0$'
+
-- go.mod --
module example.com
go 1.13