# Test default GOPROXY and GOSUMDB
[go-builder] env GOPROXY=
[go-builder] env GOSUMDB=
[go-builder] go env GOPROXY
[go-builder] stdout '^https://proxy.golang.org,direct$'
[go-builder] go env GOSUMDB
[go-builder] stdout '^sum.golang.org$'
[go-builder] env GOPROXY=https://proxy.golang.org
[go-builder] go env GOSUMDB
[go-builder] stdout '^sum.golang.org$'

# Download direct from github.

[!net:proxy.golang.org] skip
[!net:sum.golang.org] skip
[!git] skip
env GOMODCACHE=$WORK/modcache # we clean the modcache below
env GOSUMDB=sum.golang.org
env GOPROXY=direct

go get rsc.io/quote@v1.5.2
cp go.sum saved.sum


# Download from proxy.golang.org with go.sum entry already.
# Use 'go list' instead of 'go get' since the latter may download extra go.mod
# files not listed in go.sum.

go clean -modcache
env GOSUMDB=sum.golang.org
env GOPROXY=https://proxy.golang.org,direct

go list -x -m all  # Download go.mod files.
! stderr github
stderr proxy.golang.org/rsc.io/quote
! stderr sum.golang.org/tile
! stderr sum.golang.org/lookup/rsc.io/quote

go list -x -deps rsc.io/quote  # Download module source.
! stderr github
stderr proxy.golang.org/rsc.io/quote
! stderr sum.golang.org/tile
! stderr sum.golang.org/lookup/rsc.io/quote

cmp go.sum saved.sum


# Download again.
# Should use the checksum database to validate new go.sum lines,
# but not need to fetch any new data from the proxy.

rm go.sum

go list -mod=mod -x -m all  # Add checksums for go.mod files.
stderr sum.golang.org/tile
! stderr github
! stderr proxy.golang.org/rsc.io/quote
stderr sum.golang.org/lookup/rsc.io/quote

go list -mod=mod -x rsc.io/quote  # Add checksums for module source.
! stderr .  # Adds checksums, but for entities already in the module cache.

cmp go.sum saved.sum


# test fallback to direct

env GOPROXY=$TESTGO_404_PROXY_ADDR,direct
go clean -modcache
rm go.sum

go list -mod=mod -x -m all  # Download go.mod files
stderr $TESTGO_404_PROXY_ADDR.*'404 Not Found'
stderr github.com/rsc

go list -mod=mod -x rsc.io/quote  # Download module source.
stderr $TESTGO_404_PROXY_ADDR.*'404 Not Found'
stderr github.com/rsc

cmp go.sum saved.sum


-- go.mod --
module m
