From 9c5642f1417da63d1a1d6b21b99ee393dcdeb443 Mon Sep 17 00:00:00 2001 From: John Guo Date: Tue, 10 Aug 2021 19:29:54 +0800 Subject: [PATCH] fix issue in border value checks for gstr.CompareVersion/CompareVersionGo --- text/gstr/gstr_version.go | 8 ++++---- text/gstr/gstr_z_unit_version_test.go | 6 ++++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/text/gstr/gstr_version.go b/text/gstr/gstr_version.go index eaf12f66b..ac74f6423 100644 --- a/text/gstr/gstr_version.go +++ b/text/gstr/gstr_version.go @@ -24,10 +24,10 @@ import ( // 10.2.0 // etc. func CompareVersion(a, b string) int { - if a[0] == 'v' { + if a != "" && a[0] == 'v' { a = a[1:] } - if b[0] == 'v' { + if b != "" && b[0] == 'v' { b = b[1:] } var ( @@ -71,10 +71,10 @@ func CompareVersion(a, b string) int { // v4.20.0+incompatible // etc. func CompareVersionGo(a, b string) int { - if a[0] == 'v' { + if a != "" && a[0] == 'v' { a = a[1:] } - if b[0] == 'v' { + if b != "" && b[0] == 'v' { b = b[1:] } if Count(a, "-") > 1 { diff --git a/text/gstr/gstr_z_unit_version_test.go b/text/gstr/gstr_z_unit_version_test.go index 948c3e2fe..2d4a81210 100644 --- a/text/gstr/gstr_z_unit_version_test.go +++ b/text/gstr/gstr_z_unit_version_test.go @@ -17,6 +17,9 @@ import ( func Test_CompareVersion(t *testing.T) { gtest.C(t, func(t *gtest.T) { + t.AssertEQ(gstr.CompareVersion("1", ""), 1) + t.AssertEQ(gstr.CompareVersion("", ""), 0) + t.AssertEQ(gstr.CompareVersion("", "v0.1"), -1) t.AssertEQ(gstr.CompareVersion("1", "v0.99"), 1) t.AssertEQ(gstr.CompareVersion("v1.0", "v0.99"), 1) t.AssertEQ(gstr.CompareVersion("v1.0.1", "v1.1.0"), -1) @@ -28,6 +31,9 @@ func Test_CompareVersion(t *testing.T) { func Test_CompareVersionGo(t *testing.T) { gtest.C(t, func(t *gtest.T) { + t.AssertEQ(gstr.CompareVersionGo("1", ""), 1) + t.AssertEQ(gstr.CompareVersionGo("", ""), 0) + t.AssertEQ(gstr.CompareVersionGo("", "v0.1"), -1) t.AssertEQ(gstr.CompareVersionGo("v1.0.1", "v1.1.0"), -1) t.AssertEQ(gstr.CompareVersionGo("1.0.1", "v1.1.0"), -1) t.AssertEQ(gstr.CompareVersionGo("1.0.0", "v0.1.0"), 1)