blob: 848ee3aa09a9ad3d696b0ed30c37ed3332666145 [file] [log] [blame]
# Regression test for https://golang.org/issue/47979:
#
# An argument to 'go get' that results in an upgrade to a different existing
# root should be allowed, and should not panic the 'go' command.
cp go.mod go.mod.orig
# Transitive upgrades from upgraded roots should not prevent
# 'go get -u' from performing upgrades.
cp go.mod.orig go.mod
go get -u .
cmp go.mod go.mod.want
# 'go get' of a specific version should allow upgrades of
# every dependency (transitively) required by that version,
# including dependencies that are pulled into the module
# graph by upgrading other root requirements
# (in this case, example.net/indirect).
cp go.mod.orig go.mod
go get example.net/a@v0.2.0
cmp go.mod go.mod.want
-- go.mod --
module golang.org/issue47979
go 1.17
replace (
example.net/a v0.1.0 => ./a1
example.net/a v0.2.0 => ./a2
example.net/indirect v0.1.0 => ./indirect1
example.net/indirect v0.2.0 => ./indirect2
example.net/other v0.1.0 => ./other
example.net/other v0.2.0 => ./other
)
require (
example.net/a v0.1.0
example.net/other v0.1.0
)
require example.net/indirect v0.1.0 // indirect
-- go.mod.want --
module golang.org/issue47979
go 1.17
replace (
example.net/a v0.1.0 => ./a1
example.net/a v0.2.0 => ./a2
example.net/indirect v0.1.0 => ./indirect1
example.net/indirect v0.2.0 => ./indirect2
example.net/other v0.1.0 => ./other
example.net/other v0.2.0 => ./other
)
require (
example.net/a v0.2.0
example.net/other v0.2.0
)
require example.net/indirect v0.2.0 // indirect
-- issue.go --
package issue
import _ "example.net/a"
-- useother/useother.go --
package useother
import _ "example.net/other"
-- a1/go.mod --
module example.net/a
go 1.17
require example.net/indirect v0.1.0
-- a1/a.go --
package a
-- a2/go.mod --
module example.net/a
go 1.17
require example.net/indirect v0.2.0
-- a2/a.go --
package a
import "example.net/indirect"
-- indirect1/go.mod --
module example.net/indirect
go 1.17
require example.net/other v0.1.0
-- indirect1/indirect.go --
package indirect
-- indirect2/go.mod --
module example.net/indirect
go 1.17
require example.net/other v0.2.0
-- indirect2/indirect.go --
package indirect
import "example.net/other"
-- other/go.mod --
module example.net/other
go 1.17
-- other/other.go --
package other