blob: a18bcdd915d40e09653d94c8858603dfb7c9b38c [file] [log] [blame]
# Without arguments, we just print Go's own version.
go version
stdout '^go version'
# Flags without files, or paths to missing files, should error.
! go version missing.exe
! go version -m
stderr 'with arguments'
! go version -v
stderr 'with arguments'
# Check that 'go version' succeed even when it does not contain Go build info.
# It should print an error if the file has a known Go binary extension.
#
go version empty.txt
! stdout .
! stderr .
go version empty.exe
stderr 'could not read Go build info'
go version empty.so
stderr 'could not read Go build info'
go version empty.dll
stderr 'could not read Go build info'
# Neither of the two flags above should be an issue via GOFLAGS.
env GOFLAGS='-m -v'
go version
stdout '^go version'
env GOFLAGS=
env GO111MODULE=on
# Check that very basic version lookup succeeds.
go build empty.go
go version empty$GOEXE
[cgo] go build -ldflags=-linkmode=external empty.go
[cgo] go version empty$GOEXE
# Skip the remaining builds if we are running in short mode.
[short] skip
# Check that 'go version' and 'go version -m' work on a binary built in module mode.
go get rsc.io/fortune
go build -o fortune.exe rsc.io/fortune
go version fortune.exe
stdout '^fortune.exe: .+'
go version -m fortune.exe
stdout -buildmode=exe
stdout '^\tpath\trsc.io/fortune'
stdout '^\tmod\trsc.io/fortune\tv1.0.0'
# Check the build info of a binary built from $GOROOT/src/cmd
go build -o test2json.exe cmd/test2json
go version -m test2json.exe
stdout -buildmode=exe
stdout '^test2json.exe: .+'
stdout '^\tpath\tcmd/test2json$'
! stdout 'mod[^e]'
# Repeat the test with -buildmode=pie and default linking.
[!buildmode:pie] stop
[pielinkext] [!cgo] stop
go build -buildmode=pie -o external.exe rsc.io/fortune
go version external.exe
stdout '^external.exe: .+'
go version -m external.exe
stdout -buildmode=pie
stdout '^\tpath\trsc.io/fortune'
stdout '^\tmod\trsc.io/fortune\tv1.0.0'
# Also test PIE with internal linking.
[pielinkext] stop
go build -buildmode=pie -ldflags=-linkmode=internal -o internal.exe rsc.io/fortune
go version internal.exe
stdout '^internal.exe: .+'
go version -m internal.exe
stdout -buildmode=pie
stdout '^\tpath\trsc.io/fortune'
stdout '^\tmod\trsc.io/fortune\tv1.0.0'
-- go.mod --
module m
-- empty.go --
package main
func main(){}
-- empty.txt --
-- empty.exe --
-- empty.so --
-- empty.dll --