152
func (s *StoreSuite) TestDeleteCharm(c *gc.C) {
153
url := charm.MustParseURL("cs:oneiric/wordpress")
154
for i := 0; i < 4; i++ {
155
pub, err := s.store.CharmPublisher([]*charm.URL{url},
156
fmt.Sprintf("some-digest-%d", i))
157
c.Assert(err, gc.IsNil)
158
c.Assert(pub.Revision(), gc.Equals, i)
160
err = pub.Publish(testing.Charms.ClonedDir(c.MkDir(), "dummy"))
161
c.Assert(err, gc.IsNil)
164
// Verify charms were published
165
info, rc, err := s.store.OpenCharm(url)
166
c.Assert(err, gc.IsNil)
168
c.Assert(err, gc.IsNil)
169
c.Assert(info.Revision(), gc.Equals, 3)
171
// Delete an arbitrary middle revision
172
url1 := url.WithRevision(1)
173
infos, err := s.store.DeleteCharm(url1)
174
c.Assert(err, gc.IsNil)
175
c.Assert(len(infos), gc.Equals, 1)
177
// Verify still published
178
info, rc, err = s.store.OpenCharm(url)
179
c.Assert(err, gc.IsNil)
181
c.Assert(err, gc.IsNil)
182
c.Assert(info.Revision(), gc.Equals, 3)
184
// Delete all revisions
185
expectedRevs := map[int]bool{0: true, 2: true, 3: true}
186
infos, err = s.store.DeleteCharm(url)
187
c.Assert(err, gc.IsNil)
188
c.Assert(len(infos), gc.Equals, 3)
189
for _, deleted := range infos {
190
// We deleted the charm we expected to
191
c.Assert(info.Meta().Name, gc.Equals, deleted.Meta().Name)
192
_, has := expectedRevs[deleted.Revision()]
193
c.Assert(has, gc.Equals, true)
194
delete(expectedRevs, deleted.Revision())
196
c.Assert(len(expectedRevs), gc.Equals, 0)
198
// The charm is all gone
199
_, _, err = s.store.OpenCharm(url)
200
c.Assert(err, gc.Not(gc.IsNil))
152
203
func (s *StoreSuite) TestCharmPublishError(c *gc.C) {
153
204
url := charm.MustParseURL("cs:oneiric/wordpress")
154
205
urls := []*charm.URL{url}