backend_linux_test.go 1.9 KB

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