# This test only checks that basic network lookups work.
# The full test of toolchain version selection is in gotoolchain.txt.

# This test is sensitive to "new" Go experiments, so
# update the environment to remove any existing GOEXPERIMENT
# setting, see #62016 for more on this. 
env GOEXPERIMENT=''

env TESTGO_VERSION=go1.21actual

# GOTOOLCHAIN from network, does not exist
env GOTOOLCHAIN=go1.9999x
! go version
stderr 'go: download go1.9999x for .*: toolchain not available'

# GOTOOLCHAIN from network
[!exec:/bin/sh] stop 'the fake proxy serves shell scripts instead of binaries'
env GOTOOLCHAIN=go1.999testmod
go version
stderr 'go: downloading go1.999testmod \(.*/.*\)'

# GOTOOLCHAIN cached from network
go version
! stderr downloading
stdout go1.999testmod

# GOTOOLCHAIN with GOSUMDB enabled but at a bad URL should operate in cache and not try badurl
env oldsumdb=$GOSUMDB
env GOSUMDB=$oldsumdb' http://badurl'
go version
! stderr downloading
stdout go1.999testmod

# GOTOOLCHAIN with GOSUMB=off should fail, because it cannot access even the cached sumdb info
# without the sumdb name.
env GOSUMDB=off
! go version
stderr '^go: golang.org/toolchain@v0.0.1-go1.999testmod.[a-z0-9\-]*: verifying module: checksum database disabled by GOSUMDB=off$'

# GOTOOLCHAIN with GOSUMDB enabled but at a bad URL should fail if cache is incomplete
env GOSUMDB=$oldsumdb' http://badurl'
rm $GOPATH/pkg/mod/cache/download/sumdb
! go version
! stderr downloading
stderr 'panic: use of network' # test catches network access
env GOSUMDB=$oldsumdb

# Test a real GOTOOLCHAIN
[short] skip
[!net:golang.org] skip
[!net:sum.golang.org] skip
[!GOOS:darwin] [!GOOS:windows] [!GOOS:linux] skip
[!GOARCH:amd64] [!GOARCH:arm64] skip

env GOPROXY=
[go-builder] env GOSUMDB=
[!go-builder] env GOSUMDB=sum.golang.org  # Set explicitly in case GOROOT/go.env is modified.
env GOTOOLCHAIN=go1.20.1

	# Avoid resolving a "go1.20.1" from the user's real $PATH.
	# That would not only cause the "downloading go1.20.1" message
	# to be suppressed, but may spuriously fail:
	# golang.org/dl/go1.20.1 expects to find its GOROOT in $HOME/sdk,
	# but the script environment sets HOME=/no-home.
env PATH=
env path=

go version
stderr '^go: downloading go1.20.1 '
stdout go1.20.1
