github.com/christopherobin/docker@v1.6.2/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  }