Fix: comp version

pull/31/head
zijiren233 1 year ago
parent 71deb48451
commit 53a5b03e67

@ -132,11 +132,13 @@ func CompVersion(v1, v2 string) (int, error) {
if v1 == v2 {
return VersionEqual, nil
}
v1s, err := SplitVersion(strings.TrimLeft(v1, "v"))
sub1 := strings.Split(v1, "-")
sub2 := strings.Split(v2, "-")
v1s, err := SplitVersion(strings.TrimLeft(sub1[0], "v"))
if err != nil {
return VersionEqual, err
}
v2s, err := SplitVersion(strings.TrimLeft(v2, "v"))
v2s, err := SplitVersion(strings.TrimLeft(sub2[0], "v"))
if err != nil {
return VersionEqual, err
}
@ -151,8 +153,20 @@ func CompVersion(v1, v2 string) (int, error) {
return VersionGreater, nil
} else if len(v1s) < len(v2s) {
return VersionLess, nil
} else {
sub1 = sub1[1:]
sub2 = sub2[1:]
if len(sub1) == 2 && len(sub2) == 2 {
if sub1[0] == "beta" && sub2[0] == "alpha" {
return VersionGreater, nil
} else if sub1[0] == "alpha" && sub2[0] == "beta" {
return VersionLess, nil
}
return CompVersion(sub1[1], sub2[1])
} else {
return VersionEqual, fmt.Errorf("invalid version: %s, %s", v1, v2)
}
}
return VersionGreater, nil
}
func SplitVersion(v string) ([]int, error) {

@ -58,6 +58,7 @@ func TestGetPageItems(t *testing.T) {
func FuzzCompVersion(f *testing.F) {
f.Add("v1.0.0", "v1.0.1")
f.Add("v0.2.9", "v1.5.2")
f.Add("v0.3.0-beta-1", "v0.3.0-alpha-2")
f.Fuzz(func(t *testing.T, a, b string) {
t.Logf("a: %s, b: %s", a, b)
_, err := utils.CompVersion(a, b)

Loading…
Cancel
Save