github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/version/version_test.go (about) 1 // Copyright 2012, 2013 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package version 5 6 import ( 7 "fmt" 8 "runtime" 9 10 jc "github.com/juju/testing/checkers" 11 semversion "github.com/juju/version/v2" 12 gc "gopkg.in/check.v1" 13 ) 14 15 type suite struct{} 16 17 var _ = gc.Suite(&suite{}) 18 19 var isDevTests = []struct { 20 num semversion.Number 21 dev bool 22 }{{ 23 num: semversion.Number{}, 24 }, { 25 num: semversion.Number{Major: 0, Minor: 0, Patch: 1}, 26 }, { 27 num: semversion.Number{Major: 0, Minor: 0, Patch: 2}, 28 }, { 29 num: semversion.Number{Major: 0, Minor: 1, Patch: 0}, 30 dev: true, 31 }, { 32 num: semversion.Number{Major: 0, Minor: 2, Patch: 3}, 33 }, { 34 num: semversion.Number{Major: 1, Minor: 0, Patch: 0}, 35 }, { 36 num: semversion.Number{Major: 10, Minor: 234, Patch: 3456}, 37 }, { 38 num: semversion.Number{Major: 10, Minor: 234, Patch: 3456, Build: 1}, 39 dev: true, 40 }, { 41 num: semversion.Number{Major: 10, Minor: 234, Patch: 3456, Build: 64}, 42 dev: true, 43 }, { 44 num: semversion.Number{Major: 10, Minor: 235, Patch: 3456}, 45 }, { 46 num: semversion.Number{Major: 1, Minor: 21, Patch: 1, Tag: "alpha"}, 47 dev: true, 48 }, { 49 num: semversion.Number{Major: 1, Minor: 21, Patch: 1, Tag: "alpha", Build: 1}, 50 dev: true, 51 }, { 52 num: semversion.Number{Major: 1, Minor: 21}, 53 }} 54 55 func (*suite) TestIsDev(c *gc.C) { 56 for i, test := range isDevTests { 57 c.Logf("test %d", i) 58 c.Check(IsDev(test.num), gc.Equals, test.dev) 59 } 60 } 61 62 func (s *suite) TestCompiler(c *gc.C) { 63 c.Assert(Compiler, gc.Equals, runtime.Compiler) 64 } 65 66 func (s *suite) TestCheckJujuMinVersion(c *gc.C) { 67 for _, test := range []struct { 68 toCheck semversion.Number 69 jujuVersion semversion.Number 70 error bool 71 }{ 72 { 73 toCheck: semversion.Zero, 74 jujuVersion: semversion.MustParse("2.8.0"), 75 error: false, 76 }, { 77 toCheck: semversion.MustParse("2.8.0"), 78 jujuVersion: semversion.MustParse("2.8.0"), 79 error: false, 80 }, { 81 toCheck: semversion.MustParse("2.8.0"), 82 jujuVersion: semversion.MustParse("2.8.1"), 83 error: false, 84 }, { 85 toCheck: semversion.MustParse("2.8.0"), 86 jujuVersion: semversion.MustParse("2.9.0"), 87 error: false, 88 }, { 89 toCheck: semversion.MustParse("2.8.0"), 90 jujuVersion: semversion.MustParse("3.0.0"), 91 error: false, 92 }, { 93 toCheck: semversion.MustParse("2.8.0"), 94 jujuVersion: semversion.MustParse("2.8-beta1"), 95 error: false, 96 }, { 97 toCheck: semversion.MustParse("2.8.0"), 98 jujuVersion: semversion.MustParse("2.7.0"), 99 error: true, 100 }, 101 } { 102 err := CheckJujuMinVersion(test.toCheck, test.jujuVersion) 103 if test.error { 104 c.Assert(err, jc.Satisfies, IsMinVersionError) 105 c.Assert(err.Error(), gc.Equals, 106 fmt.Sprintf("charm's min version (%s) is higher than this juju model's version (%s)", 107 test.toCheck, test.jujuVersion)) 108 } else { 109 c.Assert(err, jc.ErrorIsNil) 110 } 111 } 112 }