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  }