func (s *BundlesDirSuite) AddCharm(c *gc.C) (*uniter.Charm, *state.Charm, []byte) { curl := corecharm.MustParseURL("cs:quantal/dummy-1") surl, err := url.Parse(s.URL("/some/charm.bundle")) c.Assert(err, gc.IsNil) bunpath := charmtesting.Charms.CharmArchivePath(c.MkDir(), "dummy") bun, err := corecharm.ReadCharmArchive(bunpath) c.Assert(err, gc.IsNil) bundata, hash := readHash(c, bunpath) sch, err := s.State.AddCharm(bun, curl, surl, hash) c.Assert(err, gc.IsNil) apiCharm, err := s.uniter.Charm(sch.URL()) c.Assert(err, gc.IsNil) return apiCharm, sch, bundata }
func (br *bundleReader) AddCustomBundle(c *gc.C, url *corecharm.URL, customize func(path string)) charm.BundleInfo { base := c.MkDir() dirpath := charmtesting.Charms.ClonedDirPath(base, "dummy") if customize != nil { customize(dirpath) } dir, err := corecharm.ReadCharmDir(dirpath) c.Assert(err, gc.IsNil) err = dir.SetDiskRevision(url.Revision) c.Assert(err, gc.IsNil) bunpath := filepath.Join(base, "bundle") file, err := os.Create(bunpath) c.Assert(err, gc.IsNil) defer file.Close() err = dir.ArchiveTo(file) c.Assert(err, gc.IsNil) bundle, err := corecharm.ReadCharmArchive(bunpath) c.Assert(err, gc.IsNil) return br.AddBundle(c, url, bundle) }