Skip to content

Commit

Permalink
Merge pull request #2439 from actiontech/issue1567
Browse files Browse the repository at this point in the history
Issue1567:新增版本比较工具函数
  • Loading branch information
sjjian committed Jun 13, 2024
2 parents 9584ec0 + 0df1e4f commit 4c43029
Show file tree
Hide file tree
Showing 11 changed files with 1,357 additions and 0 deletions.
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ require (
)

require (
github.com/hashicorp/go-version v1.7.0
github.com/huaweicloud/huaweicloud-sdk-go-v3 v0.1.69
golang.org/x/text v0.13.0
)
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -429,6 +429,8 @@ github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerX
github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4=
github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY=
github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90=
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
Expand Down
19 changes: 19 additions & 0 deletions sqle/utils/version.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package utils

import (
"fmt"

goVersion "github.com/hashicorp/go-version"
)
// Check if version is less than version to be compared, for example: input (3.1.1,3.1.2) returns true, input (3.1.1,3.1.1) returns false, input (3.1.1,3.1.0) returns false
func IsVersionLessThan(version, versionToBeCompared string) (bool, error) {
version1, err := goVersion.NewVersion(version)
if err != nil {
return false, fmt.Errorf("input version is invalid:%w", err)
}
version2, err := goVersion.NewVersion(versionToBeCompared)
if err != nil {
return false, fmt.Errorf("input version to be compared is invalid:%w", err)
}
return version1.LessThan(version2), nil
}
87 changes: 87 additions & 0 deletions sqle/utils/version_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
package utils

import (
"testing"
)

func TestIsVersionLessThan(t *testing.T) {
testCases := []struct {
name string
version string
versionToBeCompared string
expectedResult bool
expectedError bool
}{
{
name: "valid versions, version is less than versionToBeCompared",
version: "1.2.3.1",
versionToBeCompared: "1.2.4",
expectedResult: true,
expectedError: false,
},
{
name: "valid versions, version is greater than versionToBeCompared",
version: "1.2.4",
versionToBeCompared: "1.2.3.1",
expectedResult: false,
expectedError: false,
},
{
name: "valid versions, version is equal to versionToBeCompared",
version: "1.2.3.2",
versionToBeCompared: "1.2.3.2",
expectedResult: false,
expectedError: false,
},
{
name: "invalid version",
version: "invalid",
versionToBeCompared: "1.2.3",
expectedResult: false,
expectedError: true,
},
{
name: "invalid versionToBeCompared",
version: "1.2.3",
versionToBeCompared: "invalid",
expectedResult: false,
expectedError: true,
}, {
name: "ob versionToBeCompared 1",
version: "4.2.1.1-101010012023111012",
versionToBeCompared: "4.2.0",
expectedResult: false,
expectedError: false,
}, {
name: "ob versionToBeCompared 2",
version: "4.2.1.2-101010012023111012",
versionToBeCompared: "4.2.0.0-100001282023042317",
expectedResult: false,
expectedError: false,
}, {
name: "ob versionToBeCompared 3",
version: "3.1.3-101010012023111012",
versionToBeCompared: "4.10.0.0-100001282023042317",
expectedResult: true,
expectedError: false,
},
{
name: "ob versionToBeCompared 4",
version: "3.1.2-101010012023111012",
versionToBeCompared: "4.10.0.0-100001282023042317",
expectedResult: true,
expectedError: false,
},
}

for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
result, err := IsVersionLessThan(tc.version, tc.versionToBeCompared)
if (err != nil) != tc.expectedError {
t.Errorf("expected error: %v, but got: %v", tc.expectedError, err != nil)
} else if result != tc.expectedResult {
t.Errorf("expected result %v, but got %v", tc.expectedResult, result)
}
})
}
}
64 changes: 64 additions & 0 deletions vendor/github.com/hashicorp/go-version/CHANGELOG.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 4c43029

Please sign in to comment.