Signed-off-by: Derek McGowan <derek@mcgstyle.net> (github: dmcgowan)
(cherry picked from commit 5c05b8447d06793530e3d860b99a6e878685275a)
Signed-off-by: Tibor Vass <tibor@docker.com>
| ... | ... |
@@ -199,6 +199,7 @@ func DriverTestDiffApply(t testing.TB, fileCount int, drivername string, driverO |
| 199 | 199 |
upper := stringid.GenerateRandomID() |
| 200 | 200 |
deleteFile := "file-remove.txt" |
| 201 | 201 |
deleteFileContent := []byte("This file should get removed in upper!")
|
| 202 |
+ deleteDir := "var/lib" |
|
| 202 | 203 |
|
| 203 | 204 |
if err := driver.Create(base, "", "", nil); err != nil {
|
| 204 | 205 |
t.Fatal(err) |
| ... | ... |
@@ -212,6 +213,10 @@ func DriverTestDiffApply(t testing.TB, fileCount int, drivername string, driverO |
| 212 | 212 |
t.Fatal(err) |
| 213 | 213 |
} |
| 214 | 214 |
|
| 215 |
+ if err := addDirectory(driver, base, deleteDir); err != nil {
|
|
| 216 |
+ t.Fatal(err) |
|
| 217 |
+ } |
|
| 218 |
+ |
|
| 215 | 219 |
if err := driver.Create(upper, base, "", nil); err != nil {
|
| 216 | 220 |
t.Fatal(err) |
| 217 | 221 |
} |
| ... | ... |
@@ -220,7 +225,7 @@ func DriverTestDiffApply(t testing.TB, fileCount int, drivername string, driverO |
| 220 | 220 |
t.Fatal(err) |
| 221 | 221 |
} |
| 222 | 222 |
|
| 223 |
- if err := removeFile(driver, upper, deleteFile); err != nil {
|
|
| 223 |
+ if err := removeAll(driver, upper, deleteFile, deleteDir); err != nil {
|
|
| 224 | 224 |
t.Fatal(err) |
| 225 | 225 |
} |
| 226 | 226 |
|
| ... | ... |
@@ -271,6 +276,10 @@ func DriverTestDiffApply(t testing.TB, fileCount int, drivername string, driverO |
| 271 | 271 |
if err := checkFileRemoved(driver, diff, deleteFile); err != nil {
|
| 272 | 272 |
t.Fatal(err) |
| 273 | 273 |
} |
| 274 |
+ |
|
| 275 |
+ if err := checkFileRemoved(driver, diff, deleteDir); err != nil {
|
|
| 276 |
+ t.Fatal(err) |
|
| 277 |
+ } |
|
| 274 | 278 |
} |
| 275 | 279 |
|
| 276 | 280 |
// DriverTestChanges tests computed changes on a layer matches changes made |
| ... | ... |
@@ -78,14 +78,29 @@ func addFile(drv graphdriver.Driver, layer, filename string, content []byte) err |
| 78 | 78 |
return ioutil.WriteFile(path.Join(root, filename), content, 0755) |
| 79 | 79 |
} |
| 80 | 80 |
|
| 81 |
-func removeFile(drv graphdriver.Driver, layer, filename string) error {
|
|
| 81 |
+func addDirectory(drv graphdriver.Driver, layer, dir string) error {
|
|
| 82 | 82 |
root, err := drv.Get(layer, "") |
| 83 | 83 |
if err != nil {
|
| 84 | 84 |
return err |
| 85 | 85 |
} |
| 86 | 86 |
defer drv.Put(layer) |
| 87 | 87 |
|
| 88 |
- return os.Remove(path.Join(root, filename)) |
|
| 88 |
+ return os.MkdirAll(path.Join(root, dir), 0755) |
|
| 89 |
+} |
|
| 90 |
+ |
|
| 91 |
+func removeAll(drv graphdriver.Driver, layer string, names ...string) error {
|
|
| 92 |
+ root, err := drv.Get(layer, "") |
|
| 93 |
+ if err != nil {
|
|
| 94 |
+ return err |
|
| 95 |
+ } |
|
| 96 |
+ defer drv.Put(layer) |
|
| 97 |
+ |
|
| 98 |
+ for _, filename := range names {
|
|
| 99 |
+ if err := os.RemoveAll(path.Join(root, filename)); err != nil {
|
|
| 100 |
+ return err |
|
| 101 |
+ } |
|
| 102 |
+ } |
|
| 103 |
+ return nil |
|
| 89 | 104 |
} |
| 90 | 105 |
|
| 91 | 106 |
func checkFileRemoved(drv graphdriver.Driver, layer, filename string) error {
|