| # Go should refuse to build code that is too new according to go.mod. |
| |
| # go.mod too new |
| env GOTOOLCHAIN=local |
| ! go build . |
| stderr '^go: go.mod requires go >= 1.99999 \(running go 1\..+\)$' |
| |
| # go.mod referenced from go.work too new |
| cp go.work.old go.work |
| ! go build . |
| stderr '^go: module . listed in go.work file requires go >= 1.99999, but go.work lists go 1.10; to update it:\n\tgo work use$' |
| |
| ! go work sync |
| stderr '^go: cannot load module . listed in go.work file: go.mod requires go >= 1.99999 \(running go 1\..+\)$' |
| |
| # go.work too new |
| cp go.work.new go.work |
| cp go.mod.old go.mod |
| ! go build . |
| stderr '^go: go.work requires go >= 1.99999 \(running go 1\..+\)$' |
| |
| # vendor too new |
| rm go.work |
| mv notvendor vendor |
| ! go build -mod=vendor . |
| stderr '^go: golang.org/x/text in vendor'${/}'modules.txt requires go >= 1.99999 \(running go 1\..+\)$' |
| |
| -- go.mod -- |
| module example |
| go 1.99999 |
| |
| -- p.go -- |
| package p |
| |
| -- go.mod.old -- |
| module example |
| go 1.10 |
| |
| -- go.work.new -- |
| go 1.99999 |
| use . |
| |
| -- go.work.old -- |
| go 1.10 |
| use . |
| |
| -- notvendor/modules.txt -- |
| # golang.org/x/text v0.9.0 |
| ## explicit; go 1.99999 |
| golang.org/x/text/internal/language |