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  }