403
404
s.LoggingSuite.SetUpTest(c)
404
405
root := c.MkDir()
405
406
s.repo = &charm.LocalRepository{root}
406
s.seriesPath = filepath.Join(root, "series")
407
s.seriesPath = filepath.Join(root, "quantal")
407
408
c.Assert(os.Mkdir(s.seriesPath, 0777), gc.IsNil)
423
424
func (s *LocalRepoSuite) TestMissingCharm(c *gc.C) {
424
425
for i, str := range []string{
425
"local:series/zebra", "local:badseries/zebra",
426
"local:quantal/zebra", "local:badseries/zebra",
427
428
c.Logf("test %d: %s", i, str)
428
429
charmURL := charm.MustParseURL(str)
436
437
func (s *LocalRepoSuite) TestMissingRepo(c *gc.C) {
437
438
c.Assert(os.RemoveAll(s.repo.Path), gc.IsNil)
438
_, err := s.repo.Latest(charm.MustParseURL("local:series/zebra"))
439
_, err := s.repo.Latest(charm.MustParseURL("local:quantal/zebra"))
439
440
c.Assert(err, gc.ErrorMatches, `no repository found at ".*"`)
440
_, err = s.repo.Get(charm.MustParseURL("local:series/zebra"))
441
_, err = s.repo.Get(charm.MustParseURL("local:quantal/zebra"))
441
442
c.Assert(err, gc.ErrorMatches, `no repository found at ".*"`)
442
443
c.Assert(ioutil.WriteFile(s.repo.Path, nil, 0666), gc.IsNil)
443
_, err = s.repo.Latest(charm.MustParseURL("local:series/zebra"))
444
_, err = s.repo.Latest(charm.MustParseURL("local:quantal/zebra"))
444
445
c.Assert(err, gc.ErrorMatches, `no repository found at ".*"`)
445
_, err = s.repo.Get(charm.MustParseURL("local:series/zebra"))
446
_, err = s.repo.Get(charm.MustParseURL("local:quantal/zebra"))
446
447
c.Assert(err, gc.ErrorMatches, `no repository found at ".*"`)
449
450
func (s *LocalRepoSuite) TestMultipleVersions(c *gc.C) {
450
charmURL := charm.MustParseURL("local:series/upgrade")
451
charmURL := charm.MustParseURL("local:quantal/upgrade")
451
452
s.addDir("upgrade1")
452
453
rev, err := s.repo.Latest(charmURL)
453
454
c.Assert(err, gc.IsNil)
483
484
func (s *LocalRepoSuite) TestBundle(c *gc.C) {
484
charmURL := charm.MustParseURL("local:series/dummy")
485
charmURL := charm.MustParseURL("local:quantal/dummy")
485
486
s.addBundle("dummy")
487
488
rev, err := s.repo.Latest(charmURL)
502
503
err = ioutil.WriteFile(filepath.Join(samplePath, "metadata.yaml"), gibberish, 0666)
503
504
c.Assert(err, gc.IsNil)
505
charmURL := charm.MustParseURL("local:series/dummy")
506
charmURL := charm.MustParseURL("local:quantal/dummy")
506
507
s.addDir("dummy")
507
508
ch, err := s.repo.Get(charmURL)
508
509
c.Assert(err, gc.IsNil)
509
510
c.Assert(ch.Revision(), gc.Equals, 1)
510
511
c.Assert(c.GetTestLog(), gc.Matches, `
511
.* WARNING juju charm: failed to load charm at ".*/series/blah": .*
512
.* WARNING juju charm: failed to load charm at ".*/series/blah.charm": .*
513
.* WARNING juju charm: failed to load charm at ".*/series/upgrade2": .*
512
.* WARNING juju charm: failed to load charm at ".*/quantal/blah": .*
513
.* WARNING juju charm: failed to load charm at ".*/quantal/blah.charm": .*
514
.* WARNING juju charm: failed to load charm at ".*/quantal/upgrade2": .*
525
526
c.Assert(err, gc.IsNil)
526
527
renameSibling(c, s.addDir("dummy"), ".dummy")
527
528
renameSibling(c, s.addBundle("dummy"), "dummy.notacharm")
528
charmURL := charm.MustParseURL("local:series/dummy")
529
charmURL := charm.MustParseURL("local:quantal/dummy")
530
531
_, err = s.repo.Get(charmURL)
531
532
s.checkNotFoundErr(c, err, charmURL)
539
540
linkPath := filepath.Join(s.seriesPath, "dummy")
540
541
err := os.Symlink(realPath, linkPath)
541
542
c.Assert(err, gc.IsNil)
542
ch, err := s.repo.Get(charm.MustParseURL("local:series/dummy"))
543
ch, err := s.repo.Get(charm.MustParseURL("local:quantal/dummy"))
543
544
c.Assert(err, gc.IsNil)
544
545
checkDummy(c, ch, linkPath)