# 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 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 TESTGOPROXY404=1 go clean -modcache rm go.sum go list -mod=mod -x -m all # Download go.mod files stderr 'proxy.golang.org.*404 testing' stderr github.com/rsc go list -mod=mod -x rsc.io/quote # Download module source. stderr 'proxy.golang.org.*404 testing' stderr github.com/rsc cmp go.sum saved.sum -- go.mod -- module m