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 get: 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
