github.com/Pankov404/juju@v0.0.0-20150703034450-be266991dceb/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: "",
    47  	err:    "series \"\" not valid",
    48  },
    49  }
    50  
    51  func (s *supportedSeriesSuite) TestGetOSFromSeries(c *gc.C) {
    52  	for _, t := range getOSFromSeriesTests {
    53  		got, err := version.GetOSFromSeries(t.series)
    54  		if t.err != "" {
    55  			c.Assert(err, gc.ErrorMatches, t.err)
    56  		} else {
    57  			c.Check(err, jc.ErrorIsNil)
    58  			c.Assert(got, gc.Equals, t.want)
    59  		}
    60  	}
    61  }
    62  
    63  func (s *supportedSeriesSuite) TestUnknownOSFromSeries(c *gc.C) {
    64  	_, err := version.GetOSFromSeries("Xuanhuaceratops")
    65  	c.Assert(err, jc.Satisfies, version.IsUnknownOSForSeriesError)
    66  	c.Assert(err, gc.ErrorMatches, `unknown OS for series: "Xuanhuaceratops"`)
    67  }
    68  
    69  func (s *supportedSeriesSuite) TestOSSupportedSeries(c *gc.C) {
    70  	version.SetSeriesVersions(map[string]string{
    71  		"trusty":  "14.04",
    72  		"utopic":  "14.10",
    73  		"win7":    "win7",
    74  		"win81":   "win81",
    75  		"centos7": "centos7",
    76  	})
    77  	series := version.OSSupportedSeries(version.Ubuntu)
    78  	c.Assert(series, jc.SameContents, []string{"trusty", "utopic"})
    79  	series = version.OSSupportedSeries(version.Windows)
    80  	c.Assert(series, jc.SameContents, []string{"win7", "win81"})
    81  	series = version.OSSupportedSeries(version.CentOS)
    82  	c.Assert(series, jc.SameContents, []string{"centos7"})
    83  }