blob: 2c39e4cec48c7e2f341525ed42a9b92d40321e59 [file] [log] [blame]
[short] skip
env -r GOROOT_REGEXP=$GOROOT
env -r WORK_REGEXP='$WORK' # don't expand $WORK; grep replaces $WORK in text before matching.
env GOROOT GOROOT_REGEXP WORK WORK_REGEXP
# A binary built without -trimpath should contain the current workspace
# and GOROOT for debugging and stack traces.
cd a
go build -o hello.exe hello.go
grep -q $WORK_REGEXP hello.exe
grep -q $GOROOT_REGEXP hello.exe
# A binary built with -trimpath should not contain the current workspace
# or GOROOT.
go build -trimpath -o hello.exe hello.go
! grep -q $GOROOT_REGEXP hello.exe
! grep -q $WORK_REGEXP hello.exe
# A binary from an external module built with -trimpath should not contain
# the current workspace or GOROOT.
cd $WORK
env GO111MODULE=on
go get -trimpath rsc.io/fortune
! grep -q $GOROOT_REGEXP $GOPATH/bin/fortune$GOEXE
! grep -q $WORK_REGEXP $GOPATH/bin/fortune$GOEXE
# Two binaries built from identical packages in different directories
# should be identical.
cd $GOPATH/src/a
go build -trimpath -o $WORK/a-GOPATH.exe .
cd $WORK/_alt/src/a
go build -trimpath -o $WORK/a-alt.exe .
cmp -q $WORK/a-GOPATH.exe $WORK/a-alt.exe
[!exec:gccgo] stop
# Binaries built using gccgo should also be identical to each other.
env GO111MODULE=off # The current released gccgo does not support builds in module mode.
cd $GOPATH/src/a
go build -compiler=gccgo -trimpath -o $WORK/gccgo-GOPATH.exe .
env old_gopath=$GOPATH
env GOPATH=$WORK/_alt
cd $WORK/_alt/src/a
go build -compiler=gccgo -trimpath -o $WORK/gccgo-alt.exe .
cd $WORK
! grep -q $GOROOT_REGEXP gccgo-GOPATH.exe
! grep -q $WORK_REGEXP gccgo-GOPATH.exe
cmp -q gccgo-GOPATH.exe gccgo-alt.exe
-- $GOPATH/src/a/hello.go --
package main
func main() { println("hello") }
-- $GOPATH/src/a/go.mod --
module example.com/a
-- $WORK/_alt/src/a/hello.go --
package main
func main() { println("hello") }
-- $WORK/_alt/src/a/go.mod --
module example.com/a