mirror of
https://github.com/golang/go
synced 2024-11-26 20:31:25 -07:00
go/version: fix package to accept go1.21.0-bigcorp
The proposal discussion made clear that suffixes should be accepted, so that people who use custom VERSION files can still pass runtime.Version() to this code. But we forgot to do that in the CL. Do that. Note that cmd/go also strips space- and tab-prefixed suffixes, but go.dev/doc/toolchain only mentions dash, so this code only strips dash. Fixes #65061. Change-Id: I6a427b78f964eb41c024890dae30223beaef13eb Cq-Include-Trybots: luci.golang.try:gotip-linux-amd64-longtest,gotip-windows-amd64-longtest Reviewed-on: https://go-review.googlesource.com/c/go/+/559796 TryBot-Bypass: Russ Cox <rsc@golang.org> Reviewed-by: Mauri de Souza Meneguzzo <mauri870@gmail.com> Reviewed-by: Bryan Mills <bcmills@google.com>
This commit is contained in:
parent
600225f83f
commit
79738217d5
@ -2,9 +2,12 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// Package version provides operations on [Go versions].
|
// Package version provides operations on [Go versions]
|
||||||
|
// in [Go toolchain name syntax]: strings like
|
||||||
|
// "go1.20", "go1.21.0", "go1.22rc2", and "go1.23.4-bigcorp".
|
||||||
//
|
//
|
||||||
// [Go versions]: https://go.dev/doc/toolchain#version
|
// [Go versions]: https://go.dev/doc/toolchain#version
|
||||||
|
// [Go toolchain name syntax]: https://go.dev/doc/toolchain#name
|
||||||
package version // import "go/version"
|
package version // import "go/version"
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@ -12,9 +15,10 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
// stripGo converts from a "go1.21" version to a "1.21" version.
|
// stripGo converts from a "go1.21-bigcorp" version to a "1.21" version.
|
||||||
// If v does not start with "go", stripGo returns the empty string (a known invalid version).
|
// If v does not start with "go", stripGo returns the empty string (a known invalid version).
|
||||||
func stripGo(v string) string {
|
func stripGo(v string) string {
|
||||||
|
v, _, _ = strings.Cut(v, "-") // strip -bigcorp suffix.
|
||||||
if len(v) < 2 || v[:2] != "go" {
|
if len(v) < 2 || v[:2] != "go" {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
@ -50,8 +54,6 @@ func Lang(x string) string {
|
|||||||
// valid versions and equal to each other.
|
// valid versions and equal to each other.
|
||||||
// The language version "go1.21" compares less than the
|
// The language version "go1.21" compares less than the
|
||||||
// release candidate and eventual releases "go1.21rc1" and "go1.21.0".
|
// release candidate and eventual releases "go1.21rc1" and "go1.21.0".
|
||||||
// Custom toolchain suffixes are ignored during comparison:
|
|
||||||
// "go1.21.0" and "go1.21.0-bigcorp" are equal.
|
|
||||||
func Compare(x, y string) int {
|
func Compare(x, y string) int {
|
||||||
return gover.Compare(stripGo(x), stripGo(y))
|
return gover.Compare(stripGo(x), stripGo(y))
|
||||||
}
|
}
|
||||||
|
@ -23,13 +23,16 @@ var compareTests = []testCase2[string, string, int]{
|
|||||||
{"go1.19", "go1.19.0", 0},
|
{"go1.19", "go1.19.0", 0},
|
||||||
{"go1.19rc1", "go1.19", -1},
|
{"go1.19rc1", "go1.19", -1},
|
||||||
{"go1.20", "go1.20.0", 0},
|
{"go1.20", "go1.20.0", 0},
|
||||||
|
{"go1.20", "go1.20.0-bigcorp", 0},
|
||||||
{"go1.20rc1", "go1.20", -1},
|
{"go1.20rc1", "go1.20", -1},
|
||||||
{"go1.21", "go1.21.0", -1},
|
{"go1.21", "go1.21.0", -1},
|
||||||
|
{"go1.21", "go1.21.0-bigcorp", -1},
|
||||||
{"go1.21", "go1.21rc1", -1},
|
{"go1.21", "go1.21rc1", -1},
|
||||||
{"go1.21rc1", "go1.21.0", -1},
|
{"go1.21rc1", "go1.21.0", -1},
|
||||||
{"go1.6", "go1.19", -1},
|
{"go1.6", "go1.19", -1},
|
||||||
{"go1.19", "go1.19.1", -1},
|
{"go1.19", "go1.19.1", -1},
|
||||||
{"go1.19rc1", "go1.19", -1},
|
{"go1.19rc1", "go1.19", -1},
|
||||||
|
{"go1.19rc1", "go1.19", -1},
|
||||||
{"go1.19rc1", "go1.19.1", -1},
|
{"go1.19rc1", "go1.19.1", -1},
|
||||||
{"go1.19rc1", "go1.19rc2", -1},
|
{"go1.19rc1", "go1.19rc2", -1},
|
||||||
{"go1.19.0", "go1.19.1", -1},
|
{"go1.19.0", "go1.19.1", -1},
|
||||||
|
Loading…
Reference in New Issue
Block a user