| # Test support for declaring needed Go version in module. |
| |
| env GO111MODULE=on |
| |
| go list |
| go build |
| go build sub.1 |
| go build subver.1 |
| ! stderr 'module requires' |
| ! go build badsub.1 |
| stderr '^note: module requires Go 1.11111$' |
| |
| go build versioned.1 |
| go mod edit -require versioned.1@v1.1.0 |
| ! go build versioned.1 |
| stderr '^note: module requires Go 1.99999$' |
| |
| [short] stop |
| |
| # The message should be printed even if the compiler emits no output. |
| go build -o $WORK/nooutput.exe nooutput.go |
| ! go build -toolexec=$WORK/nooutput.exe versioned.1 |
| stderr '^# versioned.1\nnote: module requires Go 1.99999$' |
| |
| -- go.mod -- |
| module m |
| go 1.999 |
| require ( |
| sub.1 v1.0.0 |
| subver.1 v1.0.0 |
| badsub.1 v1.0.0 |
| versioned.1 v1.0.0 |
| ) |
| replace ( |
| sub.1 => ./sub |
| subver.1 => ./subver |
| badsub.1 => ./badsub |
| versioned.1 v1.0.0 => ./versioned1 |
| versioned.1 v1.1.0 => ./versioned2 |
| ) |
| |
| -- x.go -- |
| package x |
| |
| -- sub/go.mod -- |
| module m |
| go 1.11 |
| |
| -- sub/x.go -- |
| package x |
| |
| -- subver/go.mod -- |
| module m |
| go 1.11111 |
| |
| -- subver/x.go -- |
| package x |
| |
| -- badsub/go.mod -- |
| module m |
| go 1.11111 |
| |
| -- badsub/x.go -- |
| package x |
| invalid syntax |
| |
| -- versioned1/go.mod -- |
| module versioned |
| go 1.0 |
| |
| -- versioned1/x.go -- |
| package x |
| |
| -- versioned2/go.mod -- |
| module versioned |
| go 1.99999 |
| |
| -- versioned2/x.go -- |
| package x |
| invalid syntax |
| |
| -- nooutput.go -- |
| // +build ignore |
| |
| package main |
| |
| import ( |
| "bytes" |
| "os" |
| "os/exec" |
| "strings" |
| ) |
| |
| func main() { |
| stderr := new(bytes.Buffer) |
| stdout := new(bytes.Buffer) |
| |
| cmd := exec.Command(os.Args[1], os.Args[2:]...) |
| cmd.Stderr = stderr |
| cmd.Stdout = stdout |
| |
| err := cmd.Run() |
| if strings.HasPrefix(os.Args[2], "-V") { |
| os.Stderr.Write(stderr.Bytes()) |
| os.Stdout.Write(stdout.Bytes()) |
| } |
| if err != nil { |
| os.Exit(1) |
| } |
| } |