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