| # Regression test for https://golang.org/issue/48511: |
| # requirement minimization was accidentally replacing previous |
| # versions of the main module, causing dependencies to be |
| # spuriously dropping during requirement minimization and |
| # leading to an infinite loop. |
| |
| cp go.mod go.mod.orig |
| go mod tidy |
| cmp go.mod go.mod.orig |
| |
| go get -u=patch ./... |
| cmp go.mod go.mod.want |
| |
| -- go.mod -- |
| module example.net/m |
| |
| go 1.16 |
| |
| replace ( |
| example.net/a v0.1.0 => ./a |
| example.net/b v0.1.0 => ./b |
| example.net/b v0.1.1 => ./b |
| example.net/m v0.1.0 => ./m1 |
| ) |
| |
| require example.net/a v0.1.0 |
| -- go.mod.want -- |
| module example.net/m |
| |
| go 1.16 |
| |
| replace ( |
| example.net/a v0.1.0 => ./a |
| example.net/b v0.1.0 => ./b |
| example.net/b v0.1.1 => ./b |
| example.net/m v0.1.0 => ./m1 |
| ) |
| |
| require ( |
| example.net/a v0.1.0 |
| example.net/b v0.1.1 // indirect |
| ) |
| -- m.go -- |
| package m |
| |
| import "example.net/a" |
| -- m1/go.mod -- |
| module example.net/m |
| |
| go 1.16 |
| |
| require example.net/b v0.1.0 |
| -- a/go.mod -- |
| module example.net/a |
| |
| go 1.16 |
| |
| require example.net/m v0.1.0 |
| -- a/a.go -- |
| package a |
| |
| import "example.net/b" |
| -- b/go.mod -- |
| module example.net/b |
| |
| go 1.16 |
| -- b/b.go -- |
| package b |