node build fixed
This commit is contained in:
248
seanime-2.9.10/internal/util/version_test.go
Normal file
248
seanime-2.9.10/internal/util/version_test.go
Normal file
@@ -0,0 +1,248 @@
|
||||
package util
|
||||
|
||||
import (
|
||||
"github.com/Masterminds/semver/v3"
|
||||
"github.com/stretchr/testify/require"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestCompareVersion(t *testing.T) {
|
||||
testCases := []struct {
|
||||
name string
|
||||
otherVersion string
|
||||
currVersion string
|
||||
expectedOutput int
|
||||
shouldUpdate bool
|
||||
}{
|
||||
{
|
||||
name: "Current version is newer by major version",
|
||||
currVersion: "2.0.0",
|
||||
otherVersion: "1.0.0",
|
||||
expectedOutput: 3,
|
||||
shouldUpdate: false,
|
||||
},
|
||||
{
|
||||
name: "Current version is older by major version",
|
||||
currVersion: "2.0.0",
|
||||
otherVersion: "3.0.0",
|
||||
expectedOutput: -3,
|
||||
shouldUpdate: true,
|
||||
},
|
||||
{
|
||||
name: "Current version is older by minor version",
|
||||
currVersion: "0.2.2",
|
||||
otherVersion: "0.3.0",
|
||||
expectedOutput: -2,
|
||||
shouldUpdate: true,
|
||||
},
|
||||
{
|
||||
name: "Current version is older by major version",
|
||||
currVersion: "0.2.2",
|
||||
otherVersion: "3.0.0",
|
||||
expectedOutput: -3,
|
||||
shouldUpdate: true,
|
||||
},
|
||||
{
|
||||
name: "Current version is older by minor version",
|
||||
currVersion: "0.2.2",
|
||||
otherVersion: "0.2.3",
|
||||
expectedOutput: -1,
|
||||
shouldUpdate: true,
|
||||
},
|
||||
{
|
||||
name: "Current version is newer by minor version",
|
||||
currVersion: "1.2.0",
|
||||
otherVersion: "1.1.0",
|
||||
expectedOutput: 2,
|
||||
shouldUpdate: false,
|
||||
},
|
||||
{
|
||||
name: "Current version is older by minor version",
|
||||
currVersion: "1.2.0",
|
||||
otherVersion: "1.3.0",
|
||||
expectedOutput: -2,
|
||||
shouldUpdate: true,
|
||||
},
|
||||
{
|
||||
name: "Current version is newer by patch version",
|
||||
currVersion: "1.1.2",
|
||||
otherVersion: "1.1.1",
|
||||
expectedOutput: 1,
|
||||
shouldUpdate: false,
|
||||
},
|
||||
{
|
||||
name: "Current version is older by patch version",
|
||||
currVersion: "1.1.2",
|
||||
otherVersion: "1.1.3",
|
||||
expectedOutput: -1,
|
||||
shouldUpdate: true,
|
||||
},
|
||||
{
|
||||
name: "Versions are equal",
|
||||
currVersion: "1.1.1",
|
||||
otherVersion: "1.1.1",
|
||||
expectedOutput: 0,
|
||||
shouldUpdate: false,
|
||||
},
|
||||
{
|
||||
name: "Current version is newer by patch version",
|
||||
currVersion: "1.1.1",
|
||||
otherVersion: "1.1",
|
||||
expectedOutput: 1,
|
||||
shouldUpdate: false,
|
||||
},
|
||||
{
|
||||
name: "Current version is newer by minor version + prerelease",
|
||||
currVersion: "2.2.0-prerelease",
|
||||
otherVersion: "2.1.0",
|
||||
expectedOutput: 2,
|
||||
shouldUpdate: false,
|
||||
},
|
||||
{
|
||||
name: "Current version is newer (not prerelease)",
|
||||
currVersion: "2.2.0",
|
||||
otherVersion: "2.2.0-prerelease",
|
||||
expectedOutput: 1,
|
||||
shouldUpdate: false,
|
||||
},
|
||||
{
|
||||
name: "Current version is older (is prerelease)",
|
||||
currVersion: "2.2.0-prerelease",
|
||||
otherVersion: "2.2.0",
|
||||
expectedOutput: -1,
|
||||
shouldUpdate: true,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range testCases {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
output, boolOutput := CompareVersion(tc.currVersion, tc.otherVersion)
|
||||
if output != tc.expectedOutput || boolOutput != tc.shouldUpdate {
|
||||
t.Errorf("Expected output to be %d and shouldUpdate to be %v, got output=%d and shouldUpdate=%v", tc.expectedOutput, tc.shouldUpdate, output, boolOutput)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestVersionIsOlderThan(t *testing.T) {
|
||||
|
||||
testCases := []struct {
|
||||
name string
|
||||
version string
|
||||
compare string
|
||||
isOlder bool
|
||||
}{
|
||||
{
|
||||
name: "Version is older than compare",
|
||||
version: "1.7.3",
|
||||
compare: "2.0.0",
|
||||
isOlder: true,
|
||||
},
|
||||
{
|
||||
name: "Version is newer than compare",
|
||||
version: "2.0.1",
|
||||
compare: "2.0.0",
|
||||
isOlder: false,
|
||||
},
|
||||
{
|
||||
name: "Version is equal to compare",
|
||||
version: "2.0.0",
|
||||
compare: "2.0.0",
|
||||
isOlder: false,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range testCases {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
output := VersionIsOlderThan(tc.version, tc.compare)
|
||||
if output != tc.isOlder {
|
||||
t.Errorf("Expected output to be %v, got %v", tc.isOlder, output)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func TestHasUpdated(t *testing.T) {
|
||||
|
||||
testCases := []struct {
|
||||
name string
|
||||
previousVersion string
|
||||
currentVersion string
|
||||
hasUpdated bool
|
||||
}{
|
||||
{
|
||||
name: "previousVersion is older than currentVersion",
|
||||
previousVersion: "1.7.3",
|
||||
currentVersion: "2.0.0",
|
||||
hasUpdated: true,
|
||||
},
|
||||
{
|
||||
name: "previousVersion is newer than currentVersion",
|
||||
previousVersion: "2.0.1",
|
||||
currentVersion: "2.0.0",
|
||||
hasUpdated: false,
|
||||
},
|
||||
{
|
||||
name: "previousVersion is equal to currentVersion",
|
||||
previousVersion: "2.0.0",
|
||||
currentVersion: "2.0.0",
|
||||
hasUpdated: false,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range testCases {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
hasUpdated := VersionIsOlderThan(tc.previousVersion, tc.currentVersion)
|
||||
if hasUpdated != tc.hasUpdated {
|
||||
t.Errorf("Expected output to be %v, got %v", tc.hasUpdated, hasUpdated)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func TestSemverConstraints(t *testing.T) {
|
||||
|
||||
testCases := []struct {
|
||||
name string
|
||||
version string
|
||||
constraints string
|
||||
expectedOutput bool
|
||||
}{
|
||||
{
|
||||
name: "Version is within constraint",
|
||||
version: "1.2.0",
|
||||
constraints: ">= 1.2.0, <= 1.3.0",
|
||||
expectedOutput: true,
|
||||
},
|
||||
{
|
||||
name: "Updating from 2.0.0",
|
||||
version: "2.0.1",
|
||||
constraints: "< 2.1.0",
|
||||
expectedOutput: true,
|
||||
},
|
||||
{
|
||||
name: "Version is still 2.1.0",
|
||||
version: "2.1.0",
|
||||
constraints: "< 2.1.0",
|
||||
expectedOutput: false,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range testCases {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
c, err := semver.NewConstraint(tc.constraints)
|
||||
require.NoError(t, err)
|
||||
|
||||
v, err := semver.NewVersion(tc.version)
|
||||
require.NoError(t, err)
|
||||
|
||||
output := c.Check(v)
|
||||
if output != tc.expectedOutput {
|
||||
t.Errorf("Expected output to be %v, got %v for version %s and constraint %s", tc.expectedOutput, output, tc.version, tc.constraints)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user