11
13
"labix.org/v2/mgo/bson"
12
14
gc "launchpad.net/gocheck"
15
"launchpad.net/goyaml"
17
"launchpad.net/juju-core/testing/testbase"
14
18
"launchpad.net/juju-core/version"
19
var _ = gc.Suite(suite{})
25
var _ = gc.Suite(&suite{})
21
27
func Test(t *testing.T) {
43
49
{"2.0.1.10", "2.0.0.0", 1},
46
func (suite) TestCompare(c *gc.C) {
52
func (*suite) TestCompare(c *gc.C) {
47
53
for i, test := range cmpTests {
48
54
c.Logf("test %d", i)
49
55
v1, err := version.Parse(test.v1)
105
111
err: "invalid version.*",
108
func (suite) TestParse(c *gc.C) {
114
func (*suite) TestParse(c *gc.C) {
109
115
for i, test := range parseTests {
110
116
c.Logf("test %d", i)
111
117
got, err := version.Parse(test.v)
151
157
err: "invalid binary version.*",
154
func (suite) TestParseBinary(c *gc.C) {
160
func (*suite) TestParseBinary(c *gc.C) {
155
161
for i, test := range parseBinaryTests {
156
162
c.Logf("test 1: %d", i)
157
163
got, err := version.ParseBinary(test.v)
199
func (suite) TestBinaryMarshalUnmarshal(c *gc.C) {
209
func (*suite) TestBinaryMarshalUnmarshal(c *gc.C) {
200
210
for _, m := range marshallers {
201
211
c.Logf("encoding %v", m.name)
202
212
type doc struct {
203
Version version.Binary
213
Version *version.Binary
205
v := doc{version.MustParseBinary("1.2.3-foo-bar")}
206
data, err := m.marshal(v)
207
c.Assert(err, gc.IsNil)
209
err = m.unmarshal(data, &nv)
210
c.Assert(err, gc.IsNil)
211
c.Assert(v, gc.Equals, nv)
215
// Work around goyaml bug #1096149
216
// SetYAML is not called for non-pointer fields.
217
bp := version.MustParseBinary("1.2.3-foo-bar")
219
data, err := m.marshal(&v)
220
c.Assert(err, gc.IsNil)
222
err = m.unmarshal(data, &bv)
223
c.Assert(err, gc.IsNil)
224
c.Assert(bv, gc.DeepEquals, v)
215
func (suite) TestNumberMarshalUnmarshal(c *gc.C) {
228
func (*suite) TestNumberMarshalUnmarshal(c *gc.C) {
216
229
for _, m := range marshallers {
217
230
c.Logf("encoding %v", m.name)
218
231
type doc struct {
219
Version version.Number
232
Version *version.Number
221
v := doc{version.MustParse("1.2.3")}
234
// Work around goyaml bug #1096149
235
// SetYAML is not called for non-pointer fields.
236
np := version.MustParse("1.2.3")
222
238
data, err := m.marshal(&v)
223
239
c.Assert(err, gc.IsNil)
225
241
err = m.unmarshal(data, &nv)
226
242
c.Assert(err, gc.IsNil)
227
c.Assert(v, gc.Equals, nv)
243
c.Assert(nv, gc.DeepEquals, v)
249
265
err: `invalid major version number blah: strconv.ParseInt: parsing "blah": invalid syntax`,
252
func (suite) TestParseMajorMinor(c *gc.C) {
268
func (*suite) TestParseMajorMinor(c *gc.C) {
253
269
for i, test := range parseMajorMinorTests {
254
270
c.Logf("test %d", i)
255
271
major, minor, err := version.ParseMajorMinor(test.v)
282
func (s *suite) TestUseFastLXC(c *gc.C) {
283
for i, test := range []struct {
285
releaseContent string
288
message: "missing release file",
290
message: "missing prefix in file",
291
releaseContent: "some junk\nand more junk",
293
message: "precise release",
296
DISTRIB_RELEASE=12.04
297
DISTRIB_CODENAME=precise
298
DISTRIB_DESCRIPTION="Ubuntu 12.04.3 LTS"
302
message: "trusty release",
305
DISTRIB_RELEASE=14.04
306
DISTRIB_CODENAME=trusty
307
DISTRIB_DESCRIPTION="Ubuntu Trusty Tahr (development branch)"
311
message: "minimal trusty release",
312
releaseContent: `DISTRIB_RELEASE=14.04`,
315
message: "minimal unstable unicorn",
316
releaseContent: `DISTRIB_RELEASE=14.10`,
319
message: "minimal jaunty",
320
releaseContent: `DISTRIB_RELEASE=9.10`,
323
c.Logf("%v: %v", i, test.message)
324
filename := filepath.Join(c.MkDir(), "lsbRelease")
325
s.PatchValue(version.LSBReleaseFileVar, filename)
326
if test.releaseContent != "" {
327
err := ioutil.WriteFile(filename, []byte(test.releaseContent+"\n"), 0644)
328
c.Assert(err, gc.IsNil)
330
value := version.ReleaseVersion()
331
c.Assert(value, gc.Equals, test.expected)