| # https://golang.org/issue/46142: 'go mod tidy' should error out if the version |
| # in the go.mod file is newer than the most recent supported version. |
| |
| cp go.mod go.mod.orig |
| |
| |
| # If the go.mod file specifies an unsupported Go version, 'go mod tidy' should |
| # refuse to edit it: we don't know what a tidy go.mod file for that version |
| # would look like. |
| |
| ! go mod tidy |
| stderr 'go mod tidy: go.mod file indicates go 2000.0, but maximum supported version is '$goversion'$' |
| cmp go.mod go.mod.orig |
| |
| |
| # The -e flag should push past the error and edit the file anyway, |
| # but preserve the too-high version. |
| |
| cp go.mod.orig go.mod |
| go mod tidy -e |
| stderr 'go mod tidy: go.mod file indicates go 2000.0, but maximum supported version is '$goversion'$' |
| cmp go.mod go.mod.tidy |
| |
| |
| # Explicitly switching to a supported version should suppress the error completely. |
| |
| cp go.mod.orig go.mod |
| go mod tidy -go=1.17 |
| ! stderr 'maximum supported version' |
| go mod edit -go=1.17 go.mod.tidy |
| cmp go.mod go.mod.tidy |
| |
| |
| -- go.mod -- |
| module example.net/from/the/future |
| |
| go 2000.0 |
| |
| replace example.net/m v0.0.0 => ./m |
| -- go.mod.tidy -- |
| module example.net/from/the/future |
| |
| go 2000.0 |
| |
| replace example.net/m v0.0.0 => ./m |
| |
| require example.net/m v0.0.0 |
| -- x.go -- |
| package x |
| |
| import "example.net/m" |
| -- m/go.mod -- |
| module example.net/m |
| |
| go 1.17 |
| -- m/m.go -- |
| package m |