# Regression test for 'go install' locations in GOPATH mode. env GO111MODULE=off [short] skip # Without $GOBIN set, binaries should be installed into the GOPATH bin directory. env GOBIN= rm $GOPATH/bin/go-cmd-test$GOEXE go install go-cmd-test exists $GOPATH/bin/go-cmd-test$GOEXE # With $GOBIN set, binaries should be installed to $GOBIN. env GOBIN=$WORK/bin1 mkdir -p $GOBIN go install go-cmd-test exists $GOBIN/go-cmd-test$GOEXE # Issue 11065: installing to the current directory should create an executable. cd go-cmd-test env GOBIN=$PWD go install exists ./go-cmd-test$GOEXE cd .. # Without $GOBIN set, installing a program outside $GOPATH should fail # (there is nowhere to install it). env GOPATH= # reset to default ($HOME/go, which does not exist) env GOBIN= ! go install go-cmd-test/helloworld.go stderr '^go: no install location for \.go files listed on command line \(GOBIN not set\)$' # With $GOBIN set, should install there. env GOBIN=$WORK/bin1 go install go-cmd-test/helloworld.go exists $GOBIN/helloworld$GOEXE # We can't assume that we can write to GOROOT, because it may not be writable. # However, we can check its install location using 'go list'. # cmd/fix should be installed to GOROOT/pkg, not GOPATH/bin. env GOPATH=$PWD go list -f '{{.Target}}' cmd/fix stdout $GOROOT'[/\\]pkg[/\\]tool[/\\]'$GOOS'_'$GOARCH'[/\\]fix'$GOEXE'$' # GOBIN should not affect toolchain install locations. env GOBIN=$WORK/bin1 go list -f '{{.Target}}' cmd/fix stdout $GOROOT'[/\\]pkg[/\\]tool[/\\]'$GOOS'_'$GOARCH'[/\\]fix'$GOEXE'$' -- go-cmd-test/helloworld.go -- package main func main() { println("hello world") }