| # If a patch of a module requires a higher version of itself, |
| # it should be reported as its own conflict. |
| # |
| # This case is weird and unlikely to occur often at all, but it should not |
| # spuriously succeed. |
| # (It used to print v0.1.1 but then silently upgrade to v0.2.0.) |
| |
| ! go get example.net/a@patch |
| stderr '^go get: example.net/a@patch \(v0.1.1\) requires example.net/a@v0.2.0, not example.net/a@patch \(v0.1.1\)$' # TODO: A mention of b v0.1.0 would be nice. |
| |
| -- go.mod -- |
| module example |
| |
| go 1.16 |
| |
| require example.net/a v0.1.0 |
| |
| replace ( |
| example.net/a v0.1.0 => ./a10 |
| example.net/a v0.1.1 => ./a11 |
| example.net/a v0.2.0 => ./a20 |
| example.net/b v0.1.0 => ./b10 |
| ) |
| -- example.go -- |
| package example |
| |
| import _ "example.net/a" |
| |
| -- a10/go.mod -- |
| module example.net/a |
| |
| go 1.16 |
| -- a10/a.go -- |
| package a |
| |
| -- a11/go.mod -- |
| module example.net/a |
| |
| go 1.16 |
| |
| require example.net/b v0.1.0 |
| -- a11/a.go -- |
| package a |
| |
| import _ "example.net/b" |
| |
| -- a20/go.mod -- |
| module example.net/a |
| |
| go 1.16 |
| -- a20/a.go -- |
| package a |
| |
| |
| -- b10/go.mod -- |
| module example.net/b |
| |
| go 1.16 |
| |
| require example.net/a v0.2.0 |
| -- b10/b.go -- |
| package b |
| |
| import _ "example.net/a" |