github.com/mhilton/juju-juju@v0.0.0-20150901100907-a94dd2c73455/version/supportedseries_test.go (about)

     1  // Copyright 2013 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package version_test
     5  
     6  import (
     7  	jc "github.com/juju/testing/checkers"
     8  	gc "gopkg.in/check.v1"
     9  
    10  	"github.com/juju/juju/testing"
    11  	"github.com/juju/juju/version"
    12  )
    13  
    14  type supportedSeriesSuite struct {
    15  	testing.BaseSuite
    16  	cleanup func()
    17  }
    18  
    19  var _ = gc.Suite(&supportedSeriesSuite{})
    20  
    21  func (s *supportedSeriesSuite) SetUpTest(c *gc.C) {
    22  	s.cleanup = version.SetSeriesVersions(make(map[string]string))
    23  }
    24  
    25  func (s *supportedSeriesSuite) TearDownTest(c *gc.C) {
    26  	s.cleanup()
    27  }
    28  
    29  var getOSFromSeriesTests = []struct {
    30  	series string
    31  	want   version.OSType
    32  	err    string
    33  }{{
    34  	series: "precise",
    35  	want:   version.Ubuntu,
    36  }, {
    37  	series: "win2012r2",
    38  	want:   version.Windows,
    39  }, {
    40  	series: "mountainlion",
    41  	want:   version.OSX,
    42  }, {
    43  	series: "centos7",
    44  	want:   version.CentOS,
    45  }, {
    46  	series: "arch",
    47  	want:   version.Arch,
    48  }, {
    49  	series: "",
    50  	err:    "series \"\" not valid",
    51  },
    52  }
    53  
    54  func (s *supportedSeriesSuite) TestGetOSFromSeries(c *gc.C) {
    55  	for _, t := range getOSFromSeriesTests {
    56  		got, err := version.GetOSFromSeries(t.series)
    57  		if t.err != "" {
    58  			c.Assert(err, gc.ErrorMatches, t.err)
    59  		} else {
    60  			c.Check(err, jc.ErrorIsNil)
    61  			c.Assert(got, gc.Equals, t.want)
    62  		}
    63  	}
    64  }
    65  
    66  func (s *supportedSeriesSuite) TestUnknownOSFromSeries(c *gc.C) {
    67  	_, err := version.GetOSFromSeries("Xuanhuaceratops")
    68  	c.Assert(err, jc.Satisfies, version.IsUnknownOSForSeriesError)
    69  	c.Assert(err, gc.ErrorMatches, `unknown OS for series: "Xuanhuaceratops"`)
    70  }
    71  
    72  func (s *supportedSeriesSuite) TestOSSupportedSeries(c *gc.C) {
    73  	version.SetSeriesVersions(map[string]string{
    74  		"trusty":  "14.04",
    75  		"utopic":  "14.10",
    76  		"win7":    "win7",
    77  		"win81":   "win81",
    78  		"centos7": "centos7",
    79  		"arch":    "rolling",
    80  	})
    81  	series := version.OSSupportedSeries(version.Ubuntu)
    82  	c.Assert(series, jc.SameContents, []string{"trusty", "utopic"})
    83  	series = version.OSSupportedSeries(version.Windows)
    84  	c.Assert(series, jc.SameContents, []string{"win7", "win81"})
    85  	series = version.OSSupportedSeries(version.CentOS)
    86  	c.Assert(series, jc.SameContents, []string{"centos7"})
    87  	series = version.OSSupportedSeries(version.Arch)
    88  	c.Assert(series, jc.SameContents, []string{"arch"})
    89  }