Skip to content

Commit

Permalink
cmd/go: add another test case for package/module ambiguity in 'go get'
Browse files Browse the repository at this point in the history
For #37438

Change-Id: Iae00ef7f97144e85f4f710cdb3087c2548b4b8f0
Reviewed-on: https://go-review.googlesource.com/c/go/+/256799
Trust: Bryan C. Mills <bcmills@google.com>
Trust: Jay Conrod <jayconrod@google.com>
Run-TryBot: Bryan C. Mills <bcmills@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Michael Matloob <matloob@golang.org>
Reviewed-by: Jay Conrod <jayconrod@google.com>
  • Loading branch information
Bryan C. Mills committed Sep 30, 2020
1 parent 27280d8 commit ae329ab
Show file tree
Hide file tree
Showing 4 changed files with 84 additions and 0 deletions.
16 changes: 16 additions & 0 deletions src/cmd/go/testdata/mod/example.net_pkgremoved_v0.1.0.txt
@@ -0,0 +1,16 @@
Written by hand.
Test module with a root package added in v0.1.0 and removed in v0.2.0.

-- .mod --
module example.net/pkgremoved

go 1.16
-- .info --
{"Version": "v0.1.0"}
-- go.mod --
module example.net/pkgremoved

go 1.16
-- pkgremoved.go --
// Package pkgremoved exists in v0.1.0.
package pkgremoved
15 changes: 15 additions & 0 deletions src/cmd/go/testdata/mod/example.net_pkgremoved_v0.2.0.txt
@@ -0,0 +1,15 @@
Written by hand.
Test module with a root package added in v0.1.0 and removed in v0.2.0.

-- .mod --
module example.net/pkgremoved

go 1.16
-- .info --
{"Version": "v0.2.0"}
-- go.mod --
module example.net/pkgremoved

go 1.16
-- README.txt --
Package pkgremove was removed in v0.2.0.
15 changes: 15 additions & 0 deletions src/cmd/go/testdata/mod/example.net_pkgremoved_v0.2.1.txt
@@ -0,0 +1,15 @@
Written by hand.
Test module with a root package added in v0.1.0 and removed in v0.2.0.

-- .mod --
module example.net/pkgremoved

go 1.16
-- .info --
{"Version": "v0.2.1"}
-- go.mod --
module example.net/pkgremoved

go 1.16
-- README.txt --
Package pkgremove was removed in v0.2.0.
38 changes: 38 additions & 0 deletions src/cmd/go/testdata/script/mod_get_patchmod.txt
@@ -0,0 +1,38 @@
# example.net/pkgremoved@v0.1.0 refers to a package.
go get -d example.net/pkgremoved@v0.1.0

go list example.net/pkgremoved
stdout '^example.net/pkgremoved'

# When we resolve a new dependency on example.net/other,
# it will change the meaning of the path "example.net/pkgremoved"
# from a package (at v0.1.0) to only a module (at v0.2.0).
#
# If we simultaneously 'get' that module at the query "patch", the module should
# be upgraded to its patch release (v0.2.1) even though it no longer matches a
# package.
#
# BUG(#37438): Today, the pattern is only interpreted as its initial kind
# (a package), so the 'go get' invocation fails.

! go get -d example.net/pkgremoved@patch example.net/other@v0.1.0

stderr '^go get example.net/pkgremoved@patch: module example.net/pkgremoved@latest found \(v0.2.1\), but does not contain package example.net/pkgremoved$'


-- go.mod --
module example

go 1.16

replace (
example.net/other v0.1.0 => ./other
)
-- other/go.mod --
module example.net/other

go 1.16

require example.net/pkgremoved v0.2.0
-- other/other.go --
package other

0 comments on commit ae329ab

Please sign in to comment.