| # 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 |