| [gccgo] skip 'gccgo has no standard packages' |
| [short] skip |
| |
| [!windows] env NONEXE='.exe' |
| [windows] env NONEXE='' |
| |
| env GOBIN=$WORK/tmp/bin |
| go install m/isarchive & |
| |
| go build x.go |
| exists -exec x$GOEXE |
| rm x$GOEXE |
| ! exists x$NONEXE |
| |
| go build -o myprog x.go |
| ! exists x |
| ! exists x.exe |
| exists -exec myprog |
| ! exists myprogr.exe |
| |
| ! exists bin |
| go build -o bin/x x.go |
| exists -exec bin/x |
| rm bin |
| |
| ! exists bin |
| go build -o bin/ x.go |
| exists -exec bin/x$GOEXE |
| rm bin |
| |
| [windows] ! exists bin |
| [windows] go build -o bin\x x.go |
| [windows] exists -exec bin\x |
| [windows] rm bin |
| |
| [windows] ! exists bin |
| [windows] go build -o bin\ x.go |
| [windows] exists -exec bin\x.exe |
| [windows] rm bin |
| |
| ! exists bin |
| mkdir bin |
| go build -o bin x.go |
| exists -exec bin/x$GOEXE |
| rm bin |
| |
| go build p.go |
| ! exists p |
| ! exists p.a |
| ! exists p.o |
| ! exists p.exe |
| |
| wait # for isarchive |
| |
| go build -o p.a p.go |
| exists p.a |
| exec $GOBIN/isarchive p.a |
| |
| go build cmd/gofmt |
| exists -exec gofmt$GOEXE |
| rm gofmt$GOEXE |
| ! exists gofmt$NONEXE |
| |
| go build -o mygofmt cmd/gofmt |
| exists -exec mygofmt |
| ! exists mygofmt.exe |
| ! exists gofmt |
| ! exists gofmt.exe |
| |
| go build sync/atomic |
| ! exists atomic |
| ! exists atomic.exe |
| |
| go build -o myatomic.a sync/atomic |
| exists myatomic.a |
| exec $GOBIN/isarchive myatomic.a |
| ! exists atomic |
| ! exists atomic.a |
| ! exists atomic.exe |
| |
| ! go build -o whatever cmd/gofmt sync/atomic |
| stderr 'multiple packages' |
| |
| -- go.mod -- |
| module m |
| |
| go 1.16 |
| -- x.go -- |
| package main |
| |
| func main() {} |
| -- p.go -- |
| package p |
| -- isarchive/isarchive.go -- |
| package main |
| |
| import ( |
| "bytes" |
| "fmt" |
| "io" |
| "os" |
| ) |
| |
| func main() { |
| f, err := os.Open(os.Args[1]) |
| if err != nil { |
| fmt.Fprintln(os.Stderr, err) |
| os.Exit(1) |
| } |
| buf := make([]byte, 100) |
| io.ReadFull(f, buf) |
| f.Close() |
| if !bytes.HasPrefix(buf, []byte("!<arch>\n")) { |
| fmt.Fprintf(os.Stderr, "file %s exists but is not an archive\n", os.Args[1]) |
| os.Exit(1) |
| } |
| } |