v = TestVersion
}
if strings.HasPrefix(v, "go") {
- return strings.TrimPrefix(v, "go")
+ v := strings.TrimPrefix(v, "go")
+ // Some builds use custom suffixes; strip them.
+ if i := strings.IndexAny(v, " \t+-"); i >= 0 {
+ v = v[:i]
+ }
+ if IsValid(v) {
+ return v
+ }
}
// Development branch. Use "Dev" version with just 1.N, no rc1 or .0 suffix.
return "1." + strconv.Itoa(goversion.Version)
! stdout go1.999
rm go.work
+# go1.999 should handle go1.998 without a download
+env TESTGO_VERSION=go1.999
+cp go1998 go.mod
+go version
+! stdout go1.998 # local toolchain instead
+
+# go1.998 should handle go1.998 without a download too
+env TESTGO_VERSION=go1.999
+go version
+! stdout go1.998 # local toolchain instead
+
+# go1.998+foo should handle go1.998 without a download too
+env TESTGO_VERSION=go1.998+foo
+go version
+! stdout go1.998 # local toolchain instead
+
+# go1.998-foo should handle go1.998 without a download too
+env TESTGO_VERSION=go1.998-foo
+go version
+! stdout go1.998 # local toolchain instead
+
+# 'go1.998 foo' should handle go1.998 without a download too
+env TESTGO_VERSION='go1.998 foo'
+go version
+! stdout go1.998 # local toolchain instead
+
+# go1.997-foo should download go1.998
+env TESTGO_VERSION=go1.997-foo
+! go version
+stderr go1.998
+
# GOTOOLCHAIN=auto+go1.1000 falls back to go1.1000 if newer than go line
env TESTGO_VERSION=go1.1
env GOTOOLCHAIN=auto+go1.1000
-- go1999 --
go 1.999testpath
+-- go1998 --
+go 1.998
+
-- go1999mod --
go 1.999mod
import "os"
func main() {
- os.Stdout.WriteString("go1.999testpath here!")
+ os.Stdout.WriteString("go1.999testpath here!\n")
}