github.com/a4a881d4/docker@v1.9.0-rc2/volume/local/local_test.go (about)

     1  package local
     2  
     3  import (
     4  	"io/ioutil"
     5  	"os"
     6  	"testing"
     7  )
     8  
     9  func TestRemove(t *testing.T) {
    10  	rootDir, err := ioutil.TempDir("", "local-volume-test")
    11  	if err != nil {
    12  		t.Fatal(err)
    13  	}
    14  	defer os.RemoveAll(rootDir)
    15  
    16  	r, err := New(rootDir, 0, 0)
    17  	if err != nil {
    18  		t.Fatal(err)
    19  	}
    20  
    21  	vol, err := r.Create("testing", nil)
    22  	if err != nil {
    23  		t.Fatal(err)
    24  	}
    25  
    26  	if err := r.Remove(vol); err != nil {
    27  		t.Fatal(err)
    28  	}
    29  
    30  	vol, err = r.Create("testing2", nil)
    31  	if err != nil {
    32  		t.Fatal(err)
    33  	}
    34  	if err := os.RemoveAll(vol.Path()); err != nil {
    35  		t.Fatal(err)
    36  	}
    37  
    38  	if err := r.Remove(vol); err != nil {
    39  		t.Fatal(err)
    40  	}
    41  
    42  	if _, err := os.Stat(vol.Path()); err != nil && !os.IsNotExist(err) {
    43  		t.Fatal("volume dir not removed")
    44  	}
    45  
    46  	if len(r.List()) != 0 {
    47  		t.Fatal("expected there to be no volumes")
    48  	}
    49  }
    50  
    51  func TestInitializeWithVolumes(t *testing.T) {
    52  	rootDir, err := ioutil.TempDir("", "local-volume-test")
    53  	if err != nil {
    54  		t.Fatal(err)
    55  	}
    56  	defer os.RemoveAll(rootDir)
    57  
    58  	r, err := New(rootDir, 0, 0)
    59  	if err != nil {
    60  		t.Fatal(err)
    61  	}
    62  
    63  	vol, err := r.Create("testing", nil)
    64  	if err != nil {
    65  		t.Fatal(err)
    66  	}
    67  
    68  	r, err = New(rootDir, 0, 0)
    69  	if err != nil {
    70  		t.Fatal(err)
    71  	}
    72  
    73  	v, err := r.Get(vol.Name())
    74  	if err != nil {
    75  		t.Fatal(err)
    76  	}
    77  
    78  	if v.Path() != vol.Path() {
    79  		t.Fatal("expected to re-initialize root with existing volumes")
    80  	}
    81  }
    82  
    83  func TestCreate(t *testing.T) {
    84  	rootDir, err := ioutil.TempDir("", "local-volume-test")
    85  	if err != nil {
    86  		t.Fatal(err)
    87  	}
    88  	defer os.RemoveAll(rootDir)
    89  
    90  	r, err := New(rootDir, 0, 0)
    91  	if err != nil {
    92  		t.Fatal(err)
    93  	}
    94  
    95  	cases := map[string]bool{
    96  		"name":                  true,
    97  		"name-with-dash":        true,
    98  		"name_with_underscore":  true,
    99  		"name/with/slash":       false,
   100  		"name/with/../../slash": false,
   101  		"./name":                false,
   102  		"../name":               false,
   103  		"./":                    false,
   104  		"../":                   false,
   105  		"~":                     false,
   106  		".":                     false,
   107  		"..":                    false,
   108  		"...":                   false,
   109  	}
   110  
   111  	for name, success := range cases {
   112  		v, err := r.Create(name, nil)
   113  		if success {
   114  			if err != nil {
   115  				t.Fatal(err)
   116  			}
   117  			if v.Name() != name {
   118  				t.Fatalf("Expected volume with name %s, got %s", name, v.Name())
   119  			}
   120  		} else {
   121  			if err == nil {
   122  				t.Fatalf("Expected error creating volume with name %s, got nil", name)
   123  			}
   124  		}
   125  	}
   126  }