github.com/jlmeeker/kismatic@v1.10.1-0.20180612190640-57f9005a1f1a/pkg/install/about_test.go (about) 1 package install 2 3 import ( 4 "testing" 5 6 "github.com/blang/semver" 7 ) 8 9 func TestCompleteNoiseString(t *testing.T) { 10 _, err := parseVersion("abbazabba") 11 if err == nil { 12 t.Errorf("did not catch invalid version") 13 } 14 } 15 16 func TestThreeDigits(t *testing.T) { 17 ver := mustParseVersion("1.2.3") 18 19 if ver.Major != 1 || ver.Minor != 2 || ver.Patch != 3 { 20 t.Errorf("Blank string didn't parse to version 1.2.3, instead was %v", ver) 21 } 22 } 23 24 func makeVersions(ver, testVer string) (semver.Version, semver.Version) { 25 return mustParseVersion(ver), mustParseVersion(testVer) 26 } 27 28 func TestIsSameMajorMinorPatchNewer(t *testing.T) { 29 ver, testVer := makeVersions("1.2.3", "1.2.3") 30 31 if ver.GT(testVer) { 32 t.Errorf("%v is newer than %v", ver, testVer) 33 } 34 } 35 36 func TestIsOlderMajorMinorPatchOlder(t *testing.T) { 37 ver, testVer := makeVersions("1.2.2", "1.2.3") 38 39 if ver.GT(testVer) { 40 t.Errorf("%v is newer than %v", ver, testVer) 41 } 42 } 43 44 func TestSetVersion(t *testing.T) { 45 SetVersion("1.2.3") 46 v := KismaticVersion 47 if v.Major != 1 || v.Minor != 2 || v.Patch != 3 { 48 t.Errorf("expected 1.2.3, but got %v", v) 49 } 50 } 51 52 func TestSetInvalidVersion(t *testing.T) { 53 defer func() { 54 if r := recover(); r == nil { 55 t.Errorf("did not panic") 56 } 57 }() 58 SetVersion("1.2.a") 59 } 60 61 func TestIsOlderVersion(t *testing.T) { 62 SetVersion("1.2.0") 63 if IsOlderVersion(KismaticVersion) { 64 t.Error("IsOlder returned true for the same version") 65 } 66 } 67 68 func TestGitDescribeVersion(t *testing.T) { 69 ver := mustParseVersion("v1.2.2-69-g51dfe53-dirty") 70 if ver.Major != 1 || ver.Minor != 2 || ver.Patch != 2 { 71 t.Errorf("didn't parse to version 1.2.2, instead got %v", ver) 72 } 73 if ver.Pre[0].VersionStr != "69-g51dfe53-dirty" { 74 t.Errorf("didn't parse pre-release to 69-g51dfe53-dirty, instead got %s", ver.Pre[0]) 75 } 76 } 77 78 func TestPreReleaseVersion(t *testing.T) { 79 ver := mustParseVersion("0.0.1-alpha") 80 if ver.Major != 0 || ver.Minor != 0 || ver.Patch != 1 { 81 t.Errorf("Didn't parse to version 0.0.1, instead got %v", ver) 82 } 83 if ver.Pre[0].VersionStr != "alpha" { 84 t.Errorf("Didn't parse pre-release version to alpha, instead got %s", ver.Pre) 85 } 86 } 87 88 func TestVersionPrecedence(t *testing.T) { 89 // from semver spec: 90 // 1.0.0 < 2.0.0 < 2.1.0 < 2.1.1 91 // 1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-alpha.beta < 1.0.0-beta < 1.0.0-beta.2 < 1.0.0-beta.11 < 1.0.0-rc.1 < 1.0.0. 92 order := []semver.Version{ 93 mustParseVersion("1.0.0-alpha"), 94 mustParseVersion("1.0.0-alpha.1"), 95 mustParseVersion("1.0.0-alpha.beta"), 96 mustParseVersion("1.0.0-beta"), 97 mustParseVersion("1.0.0-beta.2"), 98 mustParseVersion("1.0.0-beta.11"), 99 mustParseVersion("1.0.0-rc.1"), 100 mustParseVersion("1.0.0"), 101 mustParseVersion("1.2.3"), 102 mustParseVersion("1.3.0-alpha"), 103 mustParseVersion("1.3.0"), 104 mustParseVersion("1.3.1"), 105 mustParseVersion("1.4.999"), 106 mustParseVersion("2.0.0"), 107 mustParseVersion("2.1.0"), 108 mustParseVersion("2.1.1"), 109 } 110 111 for i := 0; i < len(order); i++ { 112 for j := i; j < len(order); j++ { 113 if order[i].GT(order[j]) { 114 t.Errorf("expected %s < %s but was not the case", order[i], order[j]) 115 } 116 } 117 } 118 } 119 120 func mustParseVersion(v string) semver.Version { 121 ver, err := parseVersion(v) 122 if err != nil { 123 panic("failed to parse version: " + v) 124 } 125 return ver 126 }