cp go.mod go.mod.orig


# 'go get' on a package already provided by the build list should update
# the module already in the build list, not fail with an ambiguous import error.

go get -d example.net/split/nested@patch
go list -m all
stdout '^example.net/split v0.2.1 '
! stdout '^example.net/split/nested'

# We should get the same behavior if we use a pattern that matches only that package.

cp go.mod.orig go.mod

go get -d example.net/split/nested/...@patch
go list -m all
stdout '^example.net/split v0.2.1 '
! stdout '^example.net/split/nested'


# If we request a version for which the package only exists in one particular module,
# we should add that one particular module but not resolve import ambiguities.
#
# In particular, if the module that previously provided the package has a
# matching version, but does not itself match the pattern and contains no
# matching packages, we should not change its version. (We should *not* downgrade
# module example.net/split to v0.1.0, despite the fact that
# example.net/split v0.2.0 currently provides the package with the requested path.)
#
# TODO(#27899): Maybe we should resolve the ambiguities by upgrading.

cp go.mod.orig go.mod

! go get -d example.net/split/nested@v0.1.0
stderr '^example.net/split/nested: ambiguous import: found package example.net/split/nested in multiple modules:\n\texample.net/split v0.2.0 \(.*split.2[/\\]nested\)\n\texample.net/split/nested v0.1.0 \(.*nested.1\)$'

# A wildcard that matches packages in some module at its selected version
# but not at the requested version should fail.
#
# We can't set the module to the selected version, because that version doesn't
# even match the query: if we ran the same query twice, we wouldn't consider the
# module to match the wildcard during the second call, so why should we consider
# it to match during the first one?  ('go get' should be idempotent, and if we
# did that then it would not be.)
#
# But we also can't leave it where it is: the user requested that we set everything
# matching the pattern to the given version, and right now we have packages
# that match the pattern but *not* the version.
#
# That only leaves two options: we can set the module to an arbitrary version
# (perhaps 'latest' or 'none'), or we can report an error and the let the user
# disambiguate. We would rather not choose arbitrarily, so we do the latter.
#
# TODO(#27899): Should we instead upgrade or downgrade to an arbirary version?

! go get -d example.net/split/nested/...@v0.1.0
stderr '^go: example.net/split/nested/\.\.\.@v0.1.0 matches packages in example.net/split@v0.2.0 but not example.net/split@v0.1.0: specify a different version for module example.net/split$'

cmp go.mod go.mod.orig


# If another argument resolves the ambiguity, we should be ok again.

go get -d example.net/split@none example.net/split/nested@v0.1.0
go list -m all
! stdout '^example.net/split '
stdout '^example.net/split/nested v0.1.0 '

cp go.mod.orig go.mod

go get -d example.net/split@v0.3.0 example.net/split/nested@v0.1.0
go list -m all
stdout '^example.net/split v0.3.0 '
stdout '^example.net/split/nested v0.1.0 '


# If a pattern applies to modules and to packages, we should set all matching
# modules to the version indicated by the pattern, and also resolve packages
# to match the pattern if possible.

cp go.mod.orig go.mod
go get -d example.net/split/nested@v0.0.0

go get -d example.net/...@v0.1.0
go list -m all
stdout '^example.net/split v0.1.0 '
stdout '^example.net/split/nested v0.1.0 '

go get -d example.net/...
go list -m all
stdout '^example.net/split v0.3.0 '
stdout '^example.net/split/nested v0.2.0 '


# @none applies to all matching module paths,
# regardless of whether they contain any packages.

go get -d example.net/...@none
go list -m all
! stdout '^example.net'

# Starting from no dependencies, a wildcard can resolve to an empty module with
# the same prefix even if it contains no packages.

go get -d example.net/...@none
go get -d example.net/split/...@v0.1.0
go list -m all
stdout '^example.net/split v0.1.0 '


-- go.mod --
module m

go 1.16

require example.net/split v0.2.0

replace (
	example.net/split v0.1.0 => ./split.1
	example.net/split v0.2.0 => ./split.2
	example.net/split v0.2.1 => ./split.2
	example.net/split v0.3.0 => ./split.3
	example.net/split/nested v0.0.0 => ./nested.0
	example.net/split/nested v0.1.0 => ./nested.1
	example.net/split/nested v0.2.0 => ./nested.2
)
-- split.1/go.mod --
module example.net/split

go 1.16
-- split.2/go.mod --
module example.net/split

go 1.16
-- split.2/nested/nested.go --
package nested
-- split.3/go.mod --
module example.net/split

go 1.16
-- nested.0/go.mod --
module example.net/split/nested

go 1.16
-- nested.1/go.mod --
module example.net/split/nested

go 1.16
-- nested.1/nested.go --
package nested
-- nested.2/go.mod --
module example.net/split/nested

go 1.16
-- nested.2/nested.go --
package nested
