platform: Add semver helper
This commit is contained in:
27
experimental/libbox/semver.go
Normal file
27
experimental/libbox/semver.go
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
package libbox
|
||||||
|
|
||||||
|
import (
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"golang.org/x/mod/semver"
|
||||||
|
)
|
||||||
|
|
||||||
|
func CompareSemver(left string, right string) bool {
|
||||||
|
normalizedLeft := normalizeSemver(left)
|
||||||
|
if !semver.IsValid(normalizedLeft) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
normalizedRight := normalizeSemver(right)
|
||||||
|
if !semver.IsValid(normalizedRight) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return semver.Compare(normalizedLeft, normalizedRight) > 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func normalizeSemver(version string) string {
|
||||||
|
trimmedVersion := strings.TrimSpace(version)
|
||||||
|
if strings.HasPrefix(trimmedVersion, "v") {
|
||||||
|
return trimmedVersion
|
||||||
|
}
|
||||||
|
return "v" + trimmedVersion
|
||||||
|
}
|
||||||
16
experimental/libbox/semver_test.go
Normal file
16
experimental/libbox/semver_test.go
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
package libbox
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestCompareSemver(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
require.False(t, CompareSemver("1.13.0-rc.4", "1.13.0"))
|
||||||
|
require.True(t, CompareSemver("1.13.1", "1.13.0"))
|
||||||
|
require.False(t, CompareSemver("v1.13.0", "1.13.0"))
|
||||||
|
require.False(t, CompareSemver("1.13.0-", "1.13.0"))
|
||||||
|
}
|
||||||
@@ -123,7 +123,6 @@ func testUDPSessionIdleTimeout(t *testing.T, proxyPort uint16, echoPort uint16,
|
|||||||
|
|
||||||
packetConn.SetReadDeadline(time.Now().Add(3 * time.Second))
|
packetConn.SetReadDeadline(time.Now().Add(3 * time.Second))
|
||||||
n, _, err = packetConn.ReadFrom(buffer)
|
n, _, err = packetConn.ReadFrom(buffer)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Logf("Read after timeout correctly failed: %v", err)
|
t.Logf("Read after timeout correctly failed: %v", err)
|
||||||
return
|
return
|
||||||
|
|||||||
Reference in New Issue
Block a user