env GO111MODULE=off # As of Go 1.12, the module cache is required. # If none of the variables we use to locate GOCACHE are set, the cache is off # and we cannot build. env GOCACHE= env XDG_CACHE_HOME= env HOME= [GOOS:plan9] env home= [GOOS:windows] env LocalAppData= ! go build -o triv triv.go stderr 'build cache is required, but could not be located: GOCACHE is not defined and .*' # If GOCACHE is set but is not an absolute path, and we cannot build. env GOCACHE=test ! go build -o triv triv.go stderr 'build cache is required, but could not be located: GOCACHE is not an absolute path' # An explicit GOCACHE=off also disables builds. env GOCACHE=off ! go build -o triv triv.go stderr 'build cache is disabled by GOCACHE=off' # If GOCACHE is set to an unwritable directory, we should diagnose it as such. [GOOS:windows] stop # Does not support unwritable directories. [root] skip # Can write to unwritable directories. mkdir $WORK/unwritable/home chmod 0555 $WORK/unwritable/home [!GOOS:plan9] env HOME=$WORK/unwritable/home [GOOS:plan9] env home=$WORK/unwritable/home env GOCACHE=$WORK/unwritable/home ! go build -o triv triv.go stderr 'failed to initialize build cache.* permission denied' -- triv.go -- package main func main() {}