github.com/rsampaio/docker@v0.7.2-0.20150827203920-fdc73cc3fc31/integration-cli/docker_cli_volume_test.go (about) 1 package main 2 3 import ( 4 "os/exec" 5 "strings" 6 7 "github.com/go-check/check" 8 ) 9 10 func (s *DockerSuite) TestVolumeCliCreate(c *check.C) { 11 dockerCmd(c, "volume", "create") 12 13 _, err := runCommand(exec.Command(dockerBinary, "volume", "create", "-d", "nosuchdriver")) 14 c.Assert(err, check.Not(check.IsNil)) 15 16 out, _ := dockerCmd(c, "volume", "create", "--name=test") 17 name := strings.TrimSpace(out) 18 c.Assert(name, check.Equals, "test") 19 } 20 21 func (s *DockerSuite) TestVolumeCliInspect(c *check.C) { 22 c.Assert( 23 exec.Command(dockerBinary, "volume", "inspect", "doesntexist").Run(), 24 check.Not(check.IsNil), 25 check.Commentf("volume inspect should error on non-existant volume"), 26 ) 27 28 out, _ := dockerCmd(c, "volume", "create") 29 name := strings.TrimSpace(out) 30 out, _ = dockerCmd(c, "volume", "inspect", "--format='{{ .Name }}'", name) 31 c.Assert(strings.TrimSpace(out), check.Equals, name) 32 33 dockerCmd(c, "volume", "create", "--name", "test") 34 out, _ = dockerCmd(c, "volume", "inspect", "--format='{{ .Name }}'", "test") 35 c.Assert(strings.TrimSpace(out), check.Equals, "test") 36 } 37 38 func (s *DockerSuite) TestVolumeCliLs(c *check.C) { 39 out, _ := dockerCmd(c, "volume", "create") 40 id := strings.TrimSpace(out) 41 42 dockerCmd(c, "volume", "create", "--name", "test") 43 dockerCmd(c, "run", "-v", "/foo", "busybox", "ls", "/") 44 45 out, _ = dockerCmd(c, "volume", "ls") 46 outArr := strings.Split(strings.TrimSpace(out), "\n") 47 c.Assert(len(outArr), check.Equals, 4, check.Commentf("\n%s", out)) 48 49 // Since there is no guarentee of ordering of volumes, we just make sure the names are in the output 50 c.Assert(strings.Contains(out, id+"\n"), check.Equals, true) 51 c.Assert(strings.Contains(out, "test\n"), check.Equals, true) 52 } 53 54 func (s *DockerSuite) TestVolumeCliRm(c *check.C) { 55 out, _ := dockerCmd(c, "volume", "create") 56 id := strings.TrimSpace(out) 57 58 dockerCmd(c, "volume", "create", "--name", "test") 59 dockerCmd(c, "volume", "rm", id) 60 dockerCmd(c, "volume", "rm", "test") 61 62 out, _ = dockerCmd(c, "volume", "ls") 63 outArr := strings.Split(strings.TrimSpace(out), "\n") 64 c.Assert(len(outArr), check.Equals, 1, check.Commentf("%s\n", out)) 65 66 volumeID := "testing" 67 dockerCmd(c, "run", "-v", volumeID+":/foo", "--name=test", "busybox", "sh", "-c", "echo hello > /foo/bar") 68 out, _, err := runCommandWithOutput(exec.Command(dockerBinary, "volume", "rm", "testing")) 69 c.Assert( 70 err, 71 check.Not(check.IsNil), 72 check.Commentf("Should not be able to remove volume that is in use by a container\n%s", out)) 73 74 out, _ = dockerCmd(c, "run", "--volumes-from=test", "--name=test2", "busybox", "sh", "-c", "cat /foo/bar") 75 c.Assert(strings.TrimSpace(out), check.Equals, "hello") 76 dockerCmd(c, "rm", "-fv", "test2") 77 dockerCmd(c, "volume", "inspect", volumeID) 78 dockerCmd(c, "rm", "-f", "test") 79 80 out, _ = dockerCmd(c, "run", "--name=test2", "-v", volumeID+":/foo", "busybox", "sh", "-c", "cat /foo/bar") 81 c.Assert(strings.TrimSpace(out), check.Equals, "hello", check.Commentf("volume data was removed")) 82 dockerCmd(c, "rm", "test2") 83 84 dockerCmd(c, "volume", "rm", volumeID) 85 c.Assert( 86 exec.Command("volume", "rm", "doesntexist").Run(), 87 check.Not(check.IsNil), 88 check.Commentf("volume rm should fail with non-existant volume"), 89 ) 90 }