| # Check that go lines are always >= go lines of dependencies. |
| |
| # Using too old a release cannot even complete module load. |
| env TESTGO_VERSION=go1.21.1 |
| env TESTGO_VERSION_SWITCH=switch |
| cp go.mod go.mod.orig |
| |
| # If the offending module is not imported, it's not detected. |
| go list |
| cmp go.mod go.mod.orig |
| |
| # Adding the import produces the error. |
| # Maybe this should auto-switch, but it requires more plumbing to get this error through, |
| # and it's a misconfigured system that should not arise in practice, so not switching is fine. |
| ! go list -deps -tags usem1 |
| cmp go.mod go.mod.orig |
| stderr '^go: module ./m1 requires go >= 1.21.2 \(running go 1.21.1\)$' |
| |
| # go get go@1.21.2 fixes the error. |
| cp go.mod.orig go.mod |
| go get go@1.21.2 |
| go list -deps -tags usem1 |
| |
| # go get -tags usem1 fixes the error. |
| cp go.mod.orig go.mod |
| go get -tags usem1 |
| go list -deps -tags usem1 |
| |
| # go get fixes the error. |
| cp go.mod.orig go.mod |
| go get |
| go list -deps -tags usem1 |
| |
| # Using a new enough release reports the error after module load and suggests 'go mod tidy' |
| env TESTGO_VERSION=go1.21.2 |
| cp go.mod.orig go.mod |
| ! go list -deps -tags usem1 |
| stderr 'updates to go.mod needed' |
| stderr 'go mod tidy' |
| go mod tidy |
| go list -deps -tags usem1 |
| |
| # go get also works |
| cp go.mod.orig go.mod |
| ! go list -deps -tags usem1 |
| stderr 'updates to go.mod needed' |
| stderr 'go mod tidy' |
| go get go@1.21.2 |
| go list -deps -tags usem1 |
| |
| |
| -- go.mod -- |
| module m |
| go 1.21.1 |
| |
| require m1 v0.0.1 |
| |
| replace m1 => ./m1 |
| |
| -- m1/go.mod -- |
| go 1.21.2 |
| |
| -- p.go -- |
| //go:build usem1 |
| |
| package p |
| |
| import _ "m1" |
| |
| -- p1.go -- |
| package p |
| |
| -- m1/p.go -- |
| package p |