1
// Copyright 2013 Canonical Ltd.
2
// Licensed under the AGPLv3, see LICENCE file for details.
7
"github.com/juju/testing"
8
jc "github.com/juju/testing/checkers"
11
"github.com/juju/utils/os"
12
"github.com/juju/utils/series"
15
type supportedSeriesSuite struct {
19
var _ = gc.Suite(&supportedSeriesSuite{})
21
func (s *supportedSeriesSuite) SetUpTest(c *gc.C) {
22
s.CleanupSuite.SetUpTest(c)
23
cleanup := series.SetSeriesVersions(make(map[string]string))
24
s.AddCleanup(func(*gc.C) { cleanup() })
27
var getOSFromSeriesTests = []struct {
38
series: "win2016nano",
41
series: "mountainlion",
51
err: "series \"\" not valid",
55
func (s *supportedSeriesSuite) TestGetOSFromSeries(c *gc.C) {
56
for _, t := range getOSFromSeriesTests {
57
got, err := series.GetOSFromSeries(t.series)
59
c.Assert(err, gc.ErrorMatches, t.err)
61
c.Check(err, jc.ErrorIsNil)
62
c.Assert(got, gc.Equals, t.want)
67
func (s *supportedSeriesSuite) TestUnknownOSFromSeries(c *gc.C) {
68
_, err := series.GetOSFromSeries("Xuanhuaceratops")
69
c.Assert(err, jc.Satisfies, series.IsUnknownOSForSeriesError)
70
c.Assert(err, gc.ErrorMatches, `unknown OS for series: "Xuanhuaceratops"`)
73
func setSeriesTestData() {
74
series.SetSeriesVersions(map[string]string{
79
"win2016nano": "win2016nano",
85
func (s *supportedSeriesSuite) TestOSSupportedSeries(c *gc.C) {
87
supported := series.OSSupportedSeries(os.Ubuntu)
88
c.Assert(supported, jc.SameContents, []string{"trusty", "utopic"})
89
supported = series.OSSupportedSeries(os.Windows)
90
c.Assert(supported, jc.SameContents, []string{"win7", "win81", "win2016nano"})
91
supported = series.OSSupportedSeries(os.CentOS)
92
c.Assert(supported, jc.SameContents, []string{"centos7"})
93
supported = series.OSSupportedSeries(os.Arch)
94
c.Assert(supported, jc.SameContents, []string{"arch"})
97
func (s *supportedSeriesSuite) TestVersionSeriesValid(c *gc.C) {
99
seriesResult, err := series.VersionSeries("14.04")
100
c.Assert(err, jc.ErrorIsNil)
101
c.Assert("trusty", gc.DeepEquals, seriesResult)
104
func (s *supportedSeriesSuite) TestVersionSeriesEmpty(c *gc.C) {
106
_, err := series.VersionSeries("")
107
c.Assert(err, gc.ErrorMatches, `.*unknown series for version: "".*`)
110
func (s *supportedSeriesSuite) TestVersionSeriesInvalid(c *gc.C) {
112
_, err := series.VersionSeries("73655")
113
c.Assert(err, gc.ErrorMatches, `.*unknown series for version: "73655".*`)
116
func (s *supportedSeriesSuite) TestSeriesVersionEmpty(c *gc.C) {
118
_, err := series.SeriesVersion("")
119
c.Assert(err, gc.ErrorMatches, `.*unknown version for series: "".*`)
122
func (s *supportedSeriesSuite) TestIsWindowsNano(c *gc.C) {
123
var isWindowsNanoTests = []struct {
127
{"win2016nano", true},
129
{"win2012r2", false},
133
for _, t := range isWindowsNanoTests {
134
c.Assert(series.IsWindowsNano(t.series), gc.Equals, t.expected)
138
func (s *supportedSeriesSuite) TestLatestLts(c *gc.C) {
142
{"testseries", "testseries"},
145
for _, test := range table {
146
series.SetLatestLtsForTesting(test.latest)
147
got := series.LatestLts()
148
c.Assert(got, gc.Equals, test.want)
151
func (s *supportedSeriesSuite) TestSetLatestLtsForTesting(c *gc.C) {
155
{"1", "xenial"}, {"2", "1"}, {"3", "2"}, {"4", "3"},
157
for _, test := range table {
158
got := series.SetLatestLtsForTesting(test.value)
159
c.Assert(got, gc.Equals, test.want)
163
func (s *supportedSeriesSuite) TestSupportedLts(c *gc.C) {
164
got := series.SupportedLts()
165
want := []string{"precise", "trusty", "xenial"}
166
c.Assert(got, gc.DeepEquals, want)