github.com/kaisenlinux/docker.io@v0.0.0-20230510090727-ea55db55fac7/engine/plugin/backend_linux_test.go (about) 1 package plugin // import "github.com/docker/docker/plugin" 2 3 import ( 4 "os" 5 "path/filepath" 6 "testing" 7 ) 8 9 func TestAtomicRemoveAllNormal(t *testing.T) { 10 dir, err := os.MkdirTemp("", "atomic-remove-with-normal") 11 if err != nil { 12 t.Fatal(err) 13 } 14 defer os.RemoveAll(dir) // just try to make sure this gets cleaned up 15 16 if err := atomicRemoveAll(dir); err != nil { 17 t.Fatal(err) 18 } 19 20 if _, err := os.Stat(dir); !os.IsNotExist(err) { 21 t.Fatalf("dir should be gone: %v", err) 22 } 23 if _, err := os.Stat(dir + "-removing"); !os.IsNotExist(err) { 24 t.Fatalf("dir should be gone: %v", err) 25 } 26 } 27 28 func TestAtomicRemoveAllAlreadyExists(t *testing.T) { 29 dir, err := os.MkdirTemp("", "atomic-remove-already-exists") 30 if err != nil { 31 t.Fatal(err) 32 } 33 defer os.RemoveAll(dir) // just try to make sure this gets cleaned up 34 35 if err := os.MkdirAll(dir+"-removing", 0755); err != nil { 36 t.Fatal(err) 37 } 38 defer os.RemoveAll(dir + "-removing") 39 40 if err := atomicRemoveAll(dir); err != nil { 41 t.Fatal(err) 42 } 43 44 if _, err := os.Stat(dir); !os.IsNotExist(err) { 45 t.Fatalf("dir should be gone: %v", err) 46 } 47 if _, err := os.Stat(dir + "-removing"); !os.IsNotExist(err) { 48 t.Fatalf("dir should be gone: %v", err) 49 } 50 } 51 52 func TestAtomicRemoveAllNotExist(t *testing.T) { 53 if err := atomicRemoveAll("/not-exist"); err != nil { 54 t.Fatal(err) 55 } 56 57 dir, err := os.MkdirTemp("", "atomic-remove-already-exists") 58 if err != nil { 59 t.Fatal(err) 60 } 61 defer os.RemoveAll(dir) // just try to make sure this gets cleaned up 62 63 // create the removing dir, but not the "real" one 64 foo := filepath.Join(dir, "foo") 65 removing := dir + "-removing" 66 if err := os.MkdirAll(removing, 0755); err != nil { 67 t.Fatal(err) 68 } 69 70 if err := atomicRemoveAll(dir); err != nil { 71 t.Fatal(err) 72 } 73 74 if _, err := os.Stat(foo); !os.IsNotExist(err) { 75 t.Fatalf("dir should be gone: %v", err) 76 } 77 if _, err := os.Stat(removing); !os.IsNotExist(err) { 78 t.Fatalf("dir should be gone: %v", err) 79 } 80 }