mirror of
https://github.com/golang/go
synced 2024-11-26 08:27:56 -07:00
cmd/go: require a module root in 'go list -m' with an unversioned path
Fixes #44803 Change-Id: Ie6ee2e3bca1809c91ecedec75d2c6620da914b29 Reviewed-on: https://go-review.googlesource.com/c/go/+/298752 Trust: Bryan C. Mills <bcmills@google.com> Run-TryBot: Bryan C. Mills <bcmills@google.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Jay Conrod <jayconrod@google.com>
This commit is contained in:
parent
a2f7067233
commit
280c735b07
@ -72,9 +72,14 @@ func listModules(ctx context.Context, args []string, listVersions, listRetracted
|
|||||||
if search.IsRelativePath(arg) {
|
if search.IsRelativePath(arg) {
|
||||||
base.Fatalf("go: cannot use relative path %s to specify module", arg)
|
base.Fatalf("go: cannot use relative path %s to specify module", arg)
|
||||||
}
|
}
|
||||||
if !HasModRoot() && (arg == "all" || strings.Contains(arg, "...")) {
|
if !HasModRoot() {
|
||||||
|
if arg == "all" || strings.Contains(arg, "...") {
|
||||||
base.Fatalf("go: cannot match %q: %v", arg, ErrNoModRoot)
|
base.Fatalf("go: cannot match %q: %v", arg, ErrNoModRoot)
|
||||||
}
|
}
|
||||||
|
if !listVersions && !strings.Contains(arg, "@") {
|
||||||
|
base.Fatalf("go: cannot match %q without -versions or an explicit version: %v", arg, ErrNoModRoot)
|
||||||
|
}
|
||||||
|
}
|
||||||
if i := strings.Index(arg, "@"); i >= 0 {
|
if i := strings.Index(arg, "@"); i >= 0 {
|
||||||
path := arg[:i]
|
path := arg[:i]
|
||||||
vers := arg[i+1:]
|
vers := arg[i+1:]
|
||||||
|
5
src/cmd/go/testdata/script/mod_outside.txt
vendored
5
src/cmd/go/testdata/script/mod_outside.txt
vendored
@ -61,6 +61,11 @@ stderr 'go: cannot match "all": go.mod file not found in current directory or an
|
|||||||
stderr 'go: cannot match "all": go.mod file not found in current directory or any parent directory; see ''go help modules''$'
|
stderr 'go: cannot match "all": go.mod file not found in current directory or any parent directory; see ''go help modules''$'
|
||||||
! stdout 'example.com/version'
|
! stdout 'example.com/version'
|
||||||
|
|
||||||
|
# 'go list -m <mods>' should fail if any of the mods lacks an explicit version.
|
||||||
|
! go list -m example.com/printversion
|
||||||
|
stderr 'go: cannot match "example.com/printversion" without -versions or an explicit version: go.mod file not found in current directory or any parent directory; see ''go help modules''$'
|
||||||
|
! stdout 'example.com/version'
|
||||||
|
|
||||||
# 'go list -m' with wildcards should fail. Wildcards match modules in the
|
# 'go list -m' with wildcards should fail. Wildcards match modules in the
|
||||||
# build list, so they aren't meaningful outside a module.
|
# build list, so they aren't meaningful outside a module.
|
||||||
! go list -m ...
|
! go list -m ...
|
||||||
|
@ -15,3 +15,8 @@ stdout '^example.com/retract/self/pseudo ""$'
|
|||||||
|
|
||||||
go list -m -e -f $FMT --versions example.com/retract/self/pseudo@latest
|
go list -m -e -f $FMT --versions example.com/retract/self/pseudo@latest
|
||||||
stdout '^example.com/retract/self/pseudo: "module example.com/retract/self/pseudo: no matching versions for query \\"latest\\"" "latest"$'
|
stdout '^example.com/retract/self/pseudo: "module example.com/retract/self/pseudo: no matching versions for query \\"latest\\"" "latest"$'
|
||||||
|
|
||||||
|
-- go.mod --
|
||||||
|
module test
|
||||||
|
|
||||||
|
go 1.17
|
||||||
|
Loading…
Reference in New Issue
Block a user