github.com/getgauge/gauge@v1.6.9/version/version_test.go (about) 1 /*---------------------------------------------------------------- 2 * Copyright (c) ThoughtWorks, Inc. 3 * Licensed under the Apache License, Version 2.0 4 * See LICENSE in the project root for license information. 5 *----------------------------------------------------------------*/ 6 7 package version 8 9 import ( 10 "fmt" 11 "testing" 12 13 . "gopkg.in/check.v1" 14 ) 15 16 func Test(t *testing.T) { TestingT(t) } 17 18 type MySuite struct{} 19 20 var _ = Suite(&MySuite{}) 21 22 func (s *MySuite) TestParsingVersion(c *C) { 23 Version, err := ParseVersion("1.5.9") 24 c.Assert(err, Equals, nil) 25 c.Assert(Version.Major, Equals, 1) 26 c.Assert(Version.Minor, Equals, 5) 27 c.Assert(Version.Patch, Equals, 9) 28 } 29 30 func (s *MySuite) TestParsingErrorForIncorrectNumberOfDotCharacters(c *C) { 31 _, err := ParseVersion("1.5.9.9") 32 c.Assert(err, ErrorMatches, "incorrect version format. version should be in the form 1.5.7") 33 34 _, err = ParseVersion("0.") 35 c.Assert(err, ErrorMatches, "incorrect version format. version should be in the form 1.5.7") 36 } 37 38 func (s *MySuite) TestParsingErrorForNonIntegerVersion(c *C) { 39 _, err := ParseVersion("a.9.0") 40 c.Assert(err, ErrorMatches, `error parsing major version a to integer. strconv.*: parsing "a": invalid syntax`) 41 42 _, err = ParseVersion("0.ffhj.78") 43 c.Assert(err, ErrorMatches, `error parsing minor version ffhj to integer. strconv.*: parsing "ffhj": invalid syntax`) 44 45 _, err = ParseVersion("8.9.opl") 46 c.Assert(err, ErrorMatches, `error parsing patch version opl to integer. strconv.*: parsing "opl": invalid syntax`) 47 } 48 49 func (s *MySuite) TestVersionComparisonGreaterLesser(c *C) { 50 higherVersion, _ := ParseVersion("0.0.7") 51 lowerVersion, _ := ParseVersion("0.0.3") 52 c.Assert(lowerVersion.IsLesserThan(higherVersion), Equals, true) 53 c.Assert(higherVersion.IsGreaterThan(lowerVersion), Equals, true) 54 55 higherVersion, _ = ParseVersion("0.7.2") 56 lowerVersion, _ = ParseVersion("0.5.7") 57 c.Assert(lowerVersion.IsLesserThan(higherVersion), Equals, true) 58 c.Assert(higherVersion.IsGreaterThan(lowerVersion), Equals, true) 59 60 higherVersion, _ = ParseVersion("4.7.2") 61 lowerVersion, _ = ParseVersion("3.8.7") 62 c.Assert(lowerVersion.IsLesserThan(higherVersion), Equals, true) 63 c.Assert(higherVersion.IsGreaterThan(lowerVersion), Equals, true) 64 65 version1, _ := ParseVersion("4.7.2") 66 version2, _ := ParseVersion("4.7.2") 67 c.Assert(version1.IsEqualTo(version2), Equals, true) 68 } 69 70 func (s *MySuite) TestVersionComparisonGreaterThanEqual(c *C) { 71 higherVersion, _ := ParseVersion("0.0.7") 72 lowerVersion, _ := ParseVersion("0.0.3") 73 c.Assert(higherVersion.IsGreaterThanEqualTo(lowerVersion), Equals, true) 74 75 higherVersion, _ = ParseVersion("0.7.2") 76 lowerVersion, _ = ParseVersion("0.5.7") 77 c.Assert(higherVersion.IsGreaterThan(lowerVersion), Equals, true) 78 79 higherVersion, _ = ParseVersion("4.7.2") 80 lowerVersion, _ = ParseVersion("3.8.7") 81 c.Assert(lowerVersion.IsLesserThan(higherVersion), Equals, true) 82 c.Assert(higherVersion.IsGreaterThan(lowerVersion), Equals, true) 83 84 version1, _ := ParseVersion("6.7.2") 85 version2, _ := ParseVersion("6.7.2") 86 c.Assert(version1.IsGreaterThanEqualTo(version2), Equals, true) 87 } 88 89 func (s *MySuite) TestVersionComparisonLesserThanEqual(c *C) { 90 higherVersion, _ := ParseVersion("0.0.7") 91 lowerVersion, _ := ParseVersion("0.0.3") 92 c.Assert(lowerVersion.IsLesserThanEqualTo(higherVersion), Equals, true) 93 94 higherVersion, _ = ParseVersion("0.7.2") 95 lowerVersion, _ = ParseVersion("0.5.7") 96 c.Assert(lowerVersion.IsLesserThanEqualTo(higherVersion), Equals, true) 97 98 higherVersion, _ = ParseVersion("5.8.2") 99 lowerVersion, _ = ParseVersion("2.9.7") 100 c.Assert(lowerVersion.IsLesserThanEqualTo(higherVersion), Equals, true) 101 102 version1, _ := ParseVersion("6.7.2") 103 version2, _ := ParseVersion("6.7.2") 104 c.Assert(version1.IsLesserThanEqualTo(version2), Equals, true) 105 } 106 107 func (s *MySuite) TestVersionIsBetweenTwoVersions(c *C) { 108 higherVersion, _ := ParseVersion("0.0.9") 109 lowerVersion, _ := ParseVersion("0.0.7") 110 middleVersion, _ := ParseVersion("0.0.8") 111 c.Assert(middleVersion.IsBetween(lowerVersion, higherVersion), Equals, true) 112 113 higherVersion, _ = ParseVersion("0.7.2") 114 lowerVersion, _ = ParseVersion("0.5.7") 115 middleVersion, _ = ParseVersion("0.6.9") 116 c.Assert(middleVersion.IsBetween(lowerVersion, higherVersion), Equals, true) 117 118 higherVersion, _ = ParseVersion("4.7.2") 119 lowerVersion, _ = ParseVersion("3.8.7") 120 middleVersion, _ = ParseVersion("4.0.1") 121 c.Assert(middleVersion.IsBetween(lowerVersion, higherVersion), Equals, true) 122 123 higherVersion, _ = ParseVersion("4.7.2") 124 lowerVersion, _ = ParseVersion("4.0.1") 125 middleVersion, _ = ParseVersion("4.0.1") 126 c.Assert(middleVersion.IsBetween(lowerVersion, higherVersion), Equals, true) 127 128 higherVersion, _ = ParseVersion("0.0.2") 129 lowerVersion, _ = ParseVersion("0.0.1") 130 middleVersion, _ = ParseVersion("0.0.2") 131 c.Assert(middleVersion.IsBetween(lowerVersion, higherVersion), Equals, true) 132 } 133 134 func (s *MySuite) TestGetLatestVersion(c *C) { 135 highestVersion := &Version{2, 2, 2} 136 versions := []*Version{&Version{0, 0, 1}, &Version{1, 2, 2}, highestVersion, &Version{0, 0, 2}, &Version{0, 2, 2}, &Version{0, 0, 3}, &Version{0, 2, 1}, &Version{0, 1, 2}} 137 latestVersion := GetLatestVersion(versions) 138 139 c.Assert(latestVersion, DeepEquals, highestVersion) 140 } 141 142 func (s *MySuite) TestCheckVersionCompatibilitySuccess(c *C) { 143 versionSupported := &VersionSupport{"0.6.5", "1.8.5"} 144 gaugeVersion := &Version{0, 6, 7} 145 c.Assert(CheckCompatibility(gaugeVersion, versionSupported), Equals, nil) 146 147 versionSupported = &VersionSupport{"0.0.1", "0.0.1"} 148 gaugeVersion = &Version{0, 0, 1} 149 c.Assert(CheckCompatibility(gaugeVersion, versionSupported), Equals, nil) 150 151 versionSupported = &VersionSupport{Minimum: "0.0.1"} 152 gaugeVersion = &Version{1, 5, 2} 153 c.Assert(CheckCompatibility(gaugeVersion, versionSupported), Equals, nil) 154 155 versionSupported = &VersionSupport{Minimum: "0.5.1"} 156 gaugeVersion = &Version{0, 5, 1} 157 c.Assert(CheckCompatibility(gaugeVersion, versionSupported), Equals, nil) 158 159 } 160 161 func (s *MySuite) TestCheckVersionCompatibilityFailure(c *C) { 162 versionsSupported := &VersionSupport{"0.6.5", "1.8.5"} 163 gaugeVersion := &Version{1, 9, 9} 164 c.Assert(CheckCompatibility(gaugeVersion, versionsSupported), NotNil) 165 166 versionsSupported = &VersionSupport{"0.0.1", "0.0.1"} 167 gaugeVersion = &Version{0, 0, 2} 168 c.Assert(CheckCompatibility(gaugeVersion, versionsSupported), NotNil) 169 170 versionsSupported = &VersionSupport{Minimum: "1.3.1"} 171 gaugeVersion = &Version{1, 3, 0} 172 c.Assert(CheckCompatibility(gaugeVersion, versionsSupported), NotNil) 173 174 versionsSupported = &VersionSupport{Minimum: "0.5.1"} 175 gaugeVersion = &Version{0, 0, 9} 176 c.Assert(CheckCompatibility(gaugeVersion, versionsSupported), NotNil) 177 178 } 179 180 func (s *MySuite) TestFullVersionWithBuildMetadata(c *C) { 181 c.Assert(FullVersion(), Equals, CurrentGaugeVersion.String()) 182 BuildMetadata = "nightly-2016-02-21" 183 c.Assert(FullVersion(), Equals, fmt.Sprintf("%s.%s", CurrentGaugeVersion.String(), BuildMetadata)) 184 }