| # Set GOCACHE to a clean directory to ensure that 'go build' has work to report. |
| [!windows] env GOCACHE=$WORK/gocache |
| [windows] env GOCACHE=$WORK\gocache |
| |
| # 'go build' should use GOTMPDIR if set. |
| [!windows] env GOTMPDIR=$WORK/my-favorite-tmpdir |
| [windows] env GOTMPDIR=$WORK\my-favorite-tmpdir |
| mkdir $GOTMPDIR |
| go build -x hello.go |
| stderr ^WORK=.*my-favorite-tmpdir |
| |
| # Make GOTMPDIR a regular file. This prevents the creation of work directories, |
| # so we can check that certain commands don't create them. |
| # This simulates running on a full disk or a read-only volume. |
| rm $GOTMPDIR |
| cp hello.go $GOTMPDIR # any file will do |
| |
| # 'go build' should fail if GOTMPDIR is read-only. |
| ! go build -x . |
| stderr '^go: creating work dir: \w+ '$GOTMPDIR |
| |
| # 'go list' should only fail if it needs to build something. |
| go list -x . |
| ! stderr 'creating work dir' |
| stdout m |
| go list -m all |
| stdout m |
| ! go list -x -export . |
| stderr '^go: creating work dir: \w+ '$GOTMPDIR |
| |
| # 'go clean -cache' and 'go clean -modcache' should not fail. |
| go clean -x -cache |
| ! stderr 'creating work dir' |
| go clean -x -modcache |
| ! stderr 'creating work dir' |
| |
| # 'go env' should not fail for specific variables. |
| # Without arguments, it needs to initialize a builder to load cgo flags, and |
| # that uses a temporary directory. |
| ! go env |
| stderr '^go: creating work dir: \w+ '$GOTMPDIR |
| go env GOROOT |
| |
| -- go.mod -- |
| module m |
| |
| go 1.15 |
| -- hello.go -- |
| package main |
| func main() { println("hello") } |