github.com/rumpl/bof@v23.0.0-rc.2+incompatible/pkg/containerfs/rm_test.go (about) 1 //go:build !darwin && !windows 2 // +build !darwin,!windows 3 4 package containerfs // import "github.com/docker/docker/pkg/containerfs" 5 6 import ( 7 "os" 8 "path/filepath" 9 "testing" 10 "time" 11 12 "github.com/moby/sys/mount" 13 ) 14 15 func TestEnsureRemoveAllWithMount(t *testing.T) { 16 if os.Getuid() != 0 { 17 t.Skip("skipping test that requires root") 18 } 19 20 dir1, err := os.MkdirTemp("", "test-ensure-removeall-with-dir1") 21 if err != nil { 22 t.Fatal(err) 23 } 24 dir2, err := os.MkdirTemp("", "test-ensure-removeall-with-dir2") 25 if err != nil { 26 t.Fatal(err) 27 } 28 defer os.RemoveAll(dir2) 29 30 bindDir := filepath.Join(dir1, "bind") 31 if err := os.MkdirAll(bindDir, 0755); err != nil { 32 t.Fatal(err) 33 } 34 35 if err := mount.Mount(dir2, bindDir, "none", "bind"); err != nil { 36 t.Fatal(err) 37 } 38 39 done := make(chan struct{}, 1) 40 go func() { 41 err = EnsureRemoveAll(dir1) 42 close(done) 43 }() 44 45 select { 46 case <-done: 47 if err != nil { 48 t.Fatal(err) 49 } 50 case <-time.After(5 * time.Second): 51 t.Fatal("timeout waiting for EnsureRemoveAll to finish") 52 } 53 54 if _, err := os.Stat(dir1); !os.IsNotExist(err) { 55 t.Fatalf("expected %q to not exist", dir1) 56 } 57 }