github.com/liuzhiyi/docker@v1.5.0/integration-cli/docker_cli_rename_test.go (about) 1 package main 2 3 import ( 4 "os/exec" 5 "strings" 6 "testing" 7 ) 8 9 func TestRenameStoppedContainer(t *testing.T) { 10 runCmd := exec.Command(dockerBinary, "run", "--name", "first_name", "-d", "busybox", "sh") 11 out, _, err := runCommandWithOutput(runCmd) 12 if err != nil { 13 t.Fatalf(out, err) 14 } 15 16 cleanedContainerID := stripTrailingCharacters(out) 17 18 runCmd = exec.Command(dockerBinary, "wait", cleanedContainerID) 19 out, _, err = runCommandWithOutput(runCmd) 20 if err != nil { 21 t.Fatalf(out, err) 22 } 23 24 name, err := inspectField(cleanedContainerID, "Name") 25 26 runCmd = exec.Command(dockerBinary, "rename", "first_name", "new_name") 27 out, _, err = runCommandWithOutput(runCmd) 28 if err != nil { 29 t.Fatalf(out, err) 30 } 31 32 name, err = inspectField(cleanedContainerID, "Name") 33 if err != nil { 34 t.Fatal(err) 35 } 36 if name != "new_name" { 37 t.Fatal("Failed to rename container ", name) 38 } 39 deleteAllContainers() 40 41 logDone("rename - stopped container") 42 } 43 44 func TestRenameRunningContainer(t *testing.T) { 45 runCmd := exec.Command(dockerBinary, "run", "--name", "first_name", "-d", "busybox", "sh") 46 out, _, err := runCommandWithOutput(runCmd) 47 if err != nil { 48 t.Fatalf(out, err) 49 } 50 51 cleanedContainerID := stripTrailingCharacters(out) 52 runCmd = exec.Command(dockerBinary, "rename", "first_name", "new_name") 53 out, _, err = runCommandWithOutput(runCmd) 54 if err != nil { 55 t.Fatalf(out, err) 56 } 57 58 name, err := inspectField(cleanedContainerID, "Name") 59 if err != nil { 60 t.Fatal(err) 61 } 62 if name != "new_name" { 63 t.Fatal("Failed to rename container ") 64 } 65 deleteAllContainers() 66 67 logDone("rename - running container") 68 } 69 70 func TestRenameCheckNames(t *testing.T) { 71 runCmd := exec.Command(dockerBinary, "run", "--name", "first_name", "-d", "busybox", "sh") 72 out, _, err := runCommandWithOutput(runCmd) 73 if err != nil { 74 t.Fatalf(out, err) 75 } 76 77 runCmd = exec.Command(dockerBinary, "rename", "first_name", "new_name") 78 out, _, err = runCommandWithOutput(runCmd) 79 if err != nil { 80 t.Fatalf(out, err) 81 } 82 83 name, err := inspectField("new_name", "Name") 84 if err != nil { 85 t.Fatal(err) 86 } 87 if name != "new_name" { 88 t.Fatal("Failed to rename container ") 89 } 90 91 name, err = inspectField("first_name", "Name") 92 if err == nil && !strings.Contains(err.Error(), "No such image or container: first_name") { 93 t.Fatal(err) 94 } 95 96 deleteAllContainers() 97 98 logDone("rename - running container") 99 } 100 101 func TestRenameInvalidName(t *testing.T) { 102 defer deleteAllContainers() 103 runCmd := exec.Command(dockerBinary, "run", "--name", "myname", "-d", "busybox", "top") 104 if out, _, err := runCommandWithOutput(runCmd); err != nil { 105 t.Fatalf(out, err) 106 } 107 108 runCmd = exec.Command(dockerBinary, "rename", "myname", "new:invalid") 109 if out, _, err := runCommandWithOutput(runCmd); err == nil || !strings.Contains(out, "Invalid container name") { 110 t.Fatalf("Renaming container to invalid name should have failed: %s\n%v", out, err) 111 } 112 113 runCmd = exec.Command(dockerBinary, "ps", "-a") 114 if out, _, err := runCommandWithOutput(runCmd); err != nil || !strings.Contains(out, "myname") { 115 t.Fatalf("Output of docker ps should have included 'myname': %s\n%v", out, err) 116 } 117 118 logDone("rename - invalid container name") 119 }