# This test uses the fake toolchain switch support in  cmd/go/internal/toolchain.Switch
# to exercise version selection logic.
# It's a trimmed copy of gotoolchain_local.txt that has been modified to use
# versions just like what the Microsoft build of Go uses.

env TESTGO_VERSION=go1.500
env TESTGO_VERSION_SWITCH=switch

go mod init m

# GOTOOLCHAIN names can have -suffix
env GOTOOLCHAIN=go1.800-1-microsoft
go version
stdout go1.800-1-microsoft

env GOTOOLCHAIN=auto
go mod edit -go=1.999 -toolchain=go1.800-1-microsoft
go version
stdout go1.999

go mod edit -go=1.777 -toolchain=go1.800-1-microsoft
go version
stdout go1.800-1-microsoft

# toolchain built with a custom version should know how it compares to others

env TESTGO_VERSION=go1.500-1-microsoft
go mod edit -go=1.499 -toolchain=none
go version
stdout go1.500-1-microsoft

go mod edit -go=1.499 -toolchain=go1.499
go version
stdout go1.500-1-microsoft

go mod edit -go=1.500 -toolchain=none
go version
stdout go1.500-1-microsoft

go mod edit -go=1.500 -toolchain=go1.500
go version
stdout go1.500-1-microsoft

go mod edit -go=1.501 -toolchain=none
go version
stdout go1.501
