# The build cache is required to build anything. It also may be needed to
# initialize the build system, which is needed for commands like 'go env'.
# However, there are lots of commands the cache is not needed for, and we
# shouldn't require it when it won't be used.
#
# TODO(golang.org/issue/39882): commands below should work, too.
# * go clean -modcache
# * go env
# * go fix
# * go fmt
# * go generate
# * go get -d
# * go list (without -export or -compiled)

env GOCACHE=off

# Commands that don't completely load packages should work.
go doc fmt
stdout Printf

! go tool compile -h
stderr usage:

go version
stdout '^go version'


# Module commands that don't load packages should work.
go mod init m
exists go.mod

go mod edit -require rsc.io/quote@v1.5.2

go mod download rsc.io/quote

go mod graph
stdout rsc.io/quote

go mod verify


# Commands that load but don't build packages should work.
go fmt .

go doc .

-- main.go --
package main

func main() {}
