Skip to content

Commit

Permalink
Merge pull request #9936 from icecrime/noecho_start_attached
Browse files Browse the repository at this point in the history
Fix cli echoing container ID on start -a|-i
  • Loading branch information
Jessie Frazelle committed Jan 7, 2015
2 parents a67e738 + eeefa2d commit 91509bf
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 4 deletions.
4 changes: 2 additions & 2 deletions api/client/commands.go
Original file line number Diff line number Diff line change
Expand Up @@ -747,12 +747,12 @@ func (cli *DockerCli) CmdStart(args ...string) error {
for _, name := range cmd.Args() {
_, _, err := readBody(cli.call("POST", "/containers/"+name+"/start", nil, false))
if err != nil {
if !*attach || !*openStdin {
if !*attach && !*openStdin {
fmt.Fprintf(cli.err, "%s\n", err)
}
encounteredError = fmt.Errorf("Error: failed to start one or more containers")
} else {
if !*attach || !*openStdin {
if !*attach && !*openStdin {
fmt.Fprintf(cli.out, "%s\n", name)
}
}
Expand Down
32 changes: 30 additions & 2 deletions integration-cli/docker_cli_start_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,8 @@ func TestStartAttachCorrectExitCode(t *testing.T) {

// make sure the container has exited before trying the "start -a"
waitCmd := exec.Command(dockerBinary, "wait", out)
if out, _, err = runCommandWithOutput(waitCmd); err != nil {
t.Fatal(out, err)
if _, _, err = runCommandWithOutput(waitCmd); err != nil {
t.Fatalf("Failed to wait on container: %v", err)
}

startCmd := exec.Command(dockerBinary, "start", "-a", out)
Expand All @@ -69,6 +69,34 @@ func TestStartAttachCorrectExitCode(t *testing.T) {
logDone("start - correct exit code returned with -a")
}

func TestStartSilentAttach(t *testing.T) {
defer deleteAllContainers()

name := "teststartattachcorrectexitcode"
runCmd := exec.Command(dockerBinary, "run", "--name", name, "busybox", "echo", "test")
out, _, _, err := runCommandWithStdoutStderr(runCmd)
if err != nil {
t.Fatalf("failed to run container: %v, output: %q", err, out)
}

// make sure the container has exited before trying the "start -a"
waitCmd := exec.Command(dockerBinary, "wait", name)
if _, _, err = runCommandWithOutput(waitCmd); err != nil {
t.Fatalf("wait command failed with error: %v", err)
}

startCmd := exec.Command(dockerBinary, "start", "-a", name)
startOut, _, err := runCommandWithOutput(startCmd)
if err != nil {
t.Fatalf("start command failed unexpectedly with error: %v, output: %q", err, startOut)
}
if expected := "test\n"; startOut != expected {
t.Fatalf("start -a produced unexpected output: expected %q, got %q", expected, startOut)
}

logDone("start - don't echo container ID when attaching")
}

func TestStartRecordError(t *testing.T) {
defer deleteAllContainers()

Expand Down

0 comments on commit 91509bf

Please sign in to comment.