kcl-lang.io/kpm@v0.8.7-0.20240520061008-9fc4c5efc8c7/pkg/semver/semver_test.go (about) 1 package semver 2 3 import ( 4 "testing" 5 6 "gotest.tools/v3/assert" 7 "kcl-lang.io/kpm/pkg/errors" 8 ) 9 10 func TestLatestVersion(t *testing.T) { 11 latest, err := LatestVersion([]string{"1.2.3", "1.4.0", "1.3.5", "1.0.0"}) 12 assert.Equal(t, err, nil) 13 assert.Equal(t, latest, "1.4.0") 14 15 latest, err = LatestVersion([]string{"1.2.3", "1.3.5", "1.0.0", "1.4.0-beta"}) 16 assert.Equal(t, err, nil) 17 assert.Equal(t, latest, "1.4.0-beta") 18 19 latest, err = LatestVersion([]string{}) 20 assert.Equal(t, err, errors.InvalidVersionFormat) 21 assert.Equal(t, latest, "") 22 23 latest, err = LatestVersion([]string{"invalid_version"}) 24 assert.Equal(t, err.Error(), "failed to parse version invalid_version\nMalformed version: invalid_version\n") 25 assert.Equal(t, latest, "") 26 27 latest, err = LatestVersion([]string{"1.2.3", "1.4.0", "1.3.5", "invalid_version"}) 28 assert.Equal(t, err.Error(), "failed to parse version invalid_version\nMalformed version: invalid_version\n") 29 assert.Equal(t, latest, "") 30 } 31 32 func TestTheLatestTagWithMissingVersion(t *testing.T) { 33 latest, err := LatestVersion([]string{"1.2", "1.4", "1.3", "1.0", "5", "0.1.0-beta"}) 34 assert.Equal(t, err, nil) 35 assert.Equal(t, latest, "5") 36 37 latest, err = LatestVersion([]string{"1.2", "1.4", "1.3", "1.0", "5.5.5"}) 38 assert.Equal(t, err, nil) 39 assert.Equal(t, latest, "5.5.5") 40 41 latest, err = LatestVersion([]string{"1.2", "1.4", "1.3", "1.0", "5.5"}) 42 assert.Equal(t, err, nil) 43 assert.Equal(t, latest, "5.5") 44 } 45 46 func TestOldestVersion(t *testing.T) { 47 oldest, err := OldestVersion([]string{"1.2.3", "1.4.0", "2.0.0", "1.3.5", "1.0.0"}) 48 assert.Equal(t, err, nil) 49 assert.Equal(t, oldest, "1.0.0") 50 51 oldest, err = OldestVersion([]string{"2.2.0", "2.4.0", "3.0.0", "2.3.5"}) 52 assert.Equal(t, err, nil) 53 assert.Equal(t, oldest, "2.2.0") 54 } 55 56 func TestFilterCompatibleVersions(t *testing.T) { 57 compatible, err := filterCompatibleVersions([]string{"1.2.3", "1.4.0", "2.0.0", "1.3.5", "1.0.0"}, "1.2.0") 58 assert.Equal(t, err, nil) 59 expCompatible := []string{"1.2.3", "1.4.0", "1.3.5", "1.0.0"} 60 for i, v := range compatible { 61 assert.Equal(t, v, expCompatible[i]) 62 } 63 64 compatible, err = filterCompatibleVersions([]string{"2.2.0", "2.4.0", "3.0.0", "2.3.5"}, "2.0.0") 65 assert.Equal(t, err, nil) 66 expCompatible = []string{"2.2.0", "2.4.0", "2.3.5"} 67 for i, v := range compatible { 68 assert.Equal(t, v, expCompatible[i]) 69 } 70 }