func (s *ManifestDeployerSuite) TestUpgradePreserveUserFiles(c *gc.C) { //TODO(bogdanteleaga): Fix this on windows if runtime.GOOS == "windows" { c.Skip("bug 1403084: cannot symlink to relative paths on windows") } 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) }
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) }