cmd/go: add a test that reproduces the internal error in #45952

For #45952

Change-Id: I90e895e2fd10bccd947f9ee5133f942fea218a07
Reviewed-on: https://go-review.googlesource.com/c/go/+/316753
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:
Bryan C. Mills 2021-05-04 16:37:29 -04:00
parent cd28ca3a4e
commit 6a6aa32783

View File

@ -0,0 +1,66 @@
# https://golang.org/issue/45952: 'go mod tidy' in an eager module failed due
# to an erroneous check on root completeness.
#
# Per the issue report:
# > It may have to do with:
# >
# > package A imports package B in go.mod, which imports package C in its own go.mod
# > package A drops direct dependency on package B …
#
# We infer from that that package C is still needed by some other indirect
# dependency, and must be at a higher version than what is required by that
# dependency (or else no new root would be needed). An additional package D
# in its own module satisfies that condition, reproducing the bug.
! go mod tidy
stderr 'internal error'
-- go.mod --
module example.net/a
go 1.16
require (
example.net/b v0.1.0
example.net/d v0.1.0
)
replace (
example.net/b v0.1.0 => ./b
example.net/c v0.1.0 => ./c
example.net/c v0.2.0 => ./c
example.net/d v0.1.0 => ./d
)
-- a.go --
package a
import _ "example.net/d"
-- b/go.mod --
module example.net/b
go 1.16
require example.net/c v0.2.0
-- b/b.go --
package b
import _ "example.net/c"
-- c/go.mod --
module example.net/c
go 1.16
-- c/c.go --
package c
-- d/go.mod --
module example.net/d
go 1.16
require example.net/c v0.1.0
-- d/d.go --
package d
import _ "example.net/c"