github.com/ncdc/docker@v0.10.1-0.20160129113957-6c6729ef5b74/integration-cli/docker_cli_rename_test.go (about) 1 package main 2 3 import ( 4 "strings" 5 6 "github.com/docker/docker/pkg/integration/checker" 7 "github.com/docker/docker/pkg/stringid" 8 "github.com/go-check/check" 9 ) 10 11 func (s *DockerSuite) TestRenameStoppedContainer(c *check.C) { 12 out, _ := dockerCmd(c, "run", "--name", "first_name", "-d", "busybox", "sh") 13 14 cleanedContainerID := strings.TrimSpace(out) 15 dockerCmd(c, "wait", cleanedContainerID) 16 17 name, err := inspectField(cleanedContainerID, "Name") 18 newName := "new_name" + stringid.GenerateNonCryptoID() 19 dockerCmd(c, "rename", "first_name", newName) 20 21 name, err = inspectField(cleanedContainerID, "Name") 22 c.Assert(err, checker.IsNil, check.Commentf("Failed to rename container %s", name)) 23 c.Assert(name, checker.Equals, "/"+newName, check.Commentf("Failed to rename container %s", name)) 24 25 } 26 27 func (s *DockerSuite) TestRenameRunningContainer(c *check.C) { 28 out, _ := dockerCmd(c, "run", "--name", "first_name", "-d", "busybox", "sh") 29 30 newName := "new_name" + stringid.GenerateNonCryptoID() 31 cleanedContainerID := strings.TrimSpace(out) 32 dockerCmd(c, "rename", "first_name", newName) 33 34 name, err := inspectField(cleanedContainerID, "Name") 35 c.Assert(err, checker.IsNil, check.Commentf("Failed to rename container %s", name)) 36 c.Assert(name, checker.Equals, "/"+newName, check.Commentf("Failed to rename container %s", name)) 37 } 38 39 func (s *DockerSuite) TestRenameRunningContainerAndReuse(c *check.C) { 40 out, _ := runSleepingContainer(c, "--name", "first_name") 41 c.Assert(waitRun("first_name"), check.IsNil) 42 43 newName := "new_name" 44 ContainerID := strings.TrimSpace(out) 45 dockerCmd(c, "rename", "first_name", newName) 46 47 name, err := inspectField(ContainerID, "Name") 48 c.Assert(err, checker.IsNil, check.Commentf("Failed to rename container %s", name)) 49 c.Assert(name, checker.Equals, "/"+newName, check.Commentf("Failed to rename container")) 50 51 out, _ = runSleepingContainer(c, "--name", "first_name") 52 c.Assert(waitRun("first_name"), check.IsNil) 53 newContainerID := strings.TrimSpace(out) 54 name, err = inspectField(newContainerID, "Name") 55 c.Assert(err, checker.IsNil, check.Commentf("Failed to reuse container name")) 56 c.Assert(name, checker.Equals, "/first_name", check.Commentf("Failed to reuse container name")) 57 } 58 59 func (s *DockerSuite) TestRenameCheckNames(c *check.C) { 60 dockerCmd(c, "run", "--name", "first_name", "-d", "busybox", "sh") 61 62 newName := "new_name" + stringid.GenerateNonCryptoID() 63 dockerCmd(c, "rename", "first_name", newName) 64 65 name, err := inspectField(newName, "Name") 66 c.Assert(err, checker.IsNil, check.Commentf("Failed to rename container %s", name)) 67 c.Assert(name, checker.Equals, "/"+newName, check.Commentf("Failed to rename container %s", name)) 68 69 name, err = inspectField("first_name", "Name") 70 c.Assert(err, checker.NotNil, check.Commentf(name)) 71 c.Assert(err.Error(), checker.Contains, "No such image or container: first_name") 72 } 73 74 func (s *DockerSuite) TestRenameInvalidName(c *check.C) { 75 runSleepingContainer(c, "--name", "myname") 76 77 out, _, err := dockerCmdWithError("rename", "myname", "new:invalid") 78 c.Assert(err, checker.NotNil, check.Commentf("Renaming container to invalid name should have failed: %s", out)) 79 c.Assert(out, checker.Contains, "Invalid container name", check.Commentf("%v", err)) 80 81 out, _, err = dockerCmdWithError("rename", "myname", "") 82 c.Assert(err, checker.NotNil, check.Commentf("Renaming container to invalid name should have failed: %s", out)) 83 c.Assert(out, checker.Contains, "may be empty", check.Commentf("%v", err)) 84 85 out, _, err = dockerCmdWithError("rename", "", "newname") 86 c.Assert(err, checker.NotNil, check.Commentf("Renaming container with empty name should have failed: %s", out)) 87 c.Assert(out, checker.Contains, "may be empty", check.Commentf("%v", err)) 88 89 out, _ = dockerCmd(c, "ps", "-a") 90 c.Assert(out, checker.Contains, "myname", check.Commentf("Output of docker ps should have included 'myname': %s", out)) 91 }