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  }