gover.Startup.AutoToolchain = toolchain
} else {
if toolchain != "" {
- // Accept toolchain only if it is >= our min.
+ // Accept toolchain only if it is > our min.
+ // (If it is equal, then min satisfies it anyway: that can matter if min
+ // has a suffix like "go1.21.1-foo" and toolchain is "go1.21.1".)
toolVers := gover.FromToolchain(toolchain)
if toolVers == "" || (!strings.HasPrefix(toolchain, "go") && !strings.Contains(toolchain, "-go")) {
base.Fatalf("invalid toolchain %q in %s", toolchain, base.ShortPath(file))
}
- if gover.Compare(toolVers, minVers) >= 0 {
+ if gover.Compare(toolVers, minVers) > 0 {
gotoolchain = toolchain
minVers = toolVers
gover.Startup.AutoToolchain = toolchain
go version
stdout go1.500-bigcorp
+go mod edit -go=1.499 -toolchain=go1.499
+go version
+stdout go1.500-bigcorp
+
go mod edit -go=1.500 -toolchain=none
go version
stdout go1.500-bigcorp
+go mod edit -go=1.500 -toolchain=go1.500
+go version
+stdout go1.500-bigcorp
+
go mod edit -go=1.501 -toolchain=none
go version
+stdout go1.501
+
+ # If toolchain > go, we must upgrade to the indicated toolchain (not just the go version).
+go mod edit -go=1.499 -toolchain=go1.501
+go version
stdout go1.501
env TESTGO_VERSION='go1.500 (bigcorp)'