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 }