func (s *EntrySuite) TestEntries(c *gc.C) { initial := ft.Entries{ ft.File{"some-file", "content", 0600}, ft.Dir{"some-dir", 0750}, ft.Symlink{"some-link", "target"}, ft.Removed{"missing"}, } expectRemoveds := ft.Entries{ ft.Removed{"some-file"}, ft.Removed{"some-dir"}, ft.Removed{"some-link"}, ft.Removed{"missing"}, } removeds := initial.AsRemoveds() c.Assert(removeds, jc.DeepEquals, expectRemoveds) expectPaths := []string{"some-file", "some-dir", "some-link", "missing"} c.Assert(initial.Paths(), jc.DeepEquals, expectPaths) c.Assert(removeds.Paths(), jc.DeepEquals, expectPaths) chainRemoveds := initial.Create(c, s.basePath).Check(c, s.basePath).AsRemoveds() c.Assert(chainRemoveds, jc.DeepEquals, expectRemoveds) chainRemoveds = chainRemoveds.Create(c, s.basePath).Check(c, s.basePath) c.Assert(chainRemoveds, jc.DeepEquals, expectRemoveds) }
func (s *ManifestDeployerSuite) TestUpgradePreserveUserFiles(c *gc.C) { originalCharmContent := ft.Entries{ ft.File{"charm-file", "to-be-removed", 0644}, ft.Dir{"charm-dir", 0755}, } s.deployCharm(c, 1, originalCharmContent...) // Add user files we expect to keep to the target dir. preserveUserContent := ft.Entries{ ft.File{"user-file", "to-be-preserved", 0644}, ft.Dir{"user-dir", 0755}, ft.File{"user-dir/user-file", "also-preserved", 0644}, }.Create(c, s.targetPath) // Add some user files we expect to be removed. removeUserContent := ft.Entries{ ft.File{"charm-dir/user-file", "whoops-removed", 0755}, }.Create(c, s.targetPath) // Add some user files we expect to be replaced. ft.Entries{ ft.File{"replace-file", "original", 0644}, ft.Dir{"replace-dir", 0755}, ft.Symlink{"replace-symlink", "replace-file"}, }.Create(c, s.targetPath) // Deploy an upgrade; all new content overwrites the old... s.deployCharm(c, 2, ft.File{"replace-file", "updated", 0644}, ft.Dir{"replace-dir", 0755}, ft.Symlink{"replace-symlink", "replace-dir"}, ) // ...and other files are preserved or removed according to // source and location. preserveUserContent.Check(c, s.targetPath) removeUserContent.AsRemoveds().Check(c, s.targetPath) originalCharmContent.AsRemoveds().Check(c, s.targetPath) }