From 39f858c891248cd5f9262dd06fd27d92467239b3 Mon Sep 17 00:00:00 2001 From: Victor Vieux Date: Thu, 31 Oct 2013 17:58:15 -0700 Subject: [PATCH 1/2] Fix logs with tty Upstream-commit: 1f44fd8624d1de3f7e1e55880352faef2e141fb1 Component: engine --- components/engine/commands.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/components/engine/commands.go b/components/engine/commands.go index 87aa12b65c..f7895557df 100644 --- a/components/engine/commands.go +++ b/components/engine/commands.go @@ -1347,8 +1347,18 @@ func (cli *DockerCli) CmdLogs(args ...string) error { return nil } name := cmd.Arg(0) + body, _, err := cli.call("GET", "/containers/"+name+"/json", nil) + if err != nil { + return err + } - if err := cli.hijack("POST", "/containers/"+name+"/attach?logs=1&stdout=1&stderr=1", false, nil, cli.out, cli.err, nil); err != nil { + container := &Container{} + err = json.Unmarshal(body, container) + if err != nil { + return err + } + + if err := cli.hijack("POST", "/containers/"+name+"/attach?logs=1&stdout=1&stderr=1", container.Config.Tty, nil, cli.out, cli.err, nil); err != nil { return err } return nil From d5f3dc4566ea594e3242e283bca37b00a728bde1 Mon Sep 17 00:00:00 2001 From: Victor Vieux Date: Mon, 4 Nov 2013 12:23:35 -0800 Subject: [PATCH 2/2] add CmdLogs test Upstream-commit: 177a2f5946623a4d4f90f5a227e57211eed6ade3 Component: engine --- components/engine/commands_test.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/components/engine/commands_test.go b/components/engine/commands_test.go index 67eae04b19..2c0e319787 100644 --- a/components/engine/commands_test.go +++ b/components/engine/commands_test.go @@ -645,3 +645,19 @@ func TestRunAutoRemove(t *testing.T) { t.Fatalf("failed to remove container automatically: container %s still exists", temporaryContainerID) } } + +func TestCmdLogs(t *testing.T) { + cli := NewDockerCli(nil, ioutil.Discard, ioutil.Discard, testDaemonProto, testDaemonAddr) + defer cleanup(globalRuntime) + + if err := cli.CmdRun(unitTestImageID, "sh", "-c", "ls -l"); err != nil { + t.Fatal(err) + } + if err := cli.CmdRun("-t", unitTestImageID, "sh", "-c", "ls -l"); err != nil { + t.Fatal(err) + } + + if err := cli.CmdLogs(globalRuntime.List()[0].ID); err != nil { + t.Fatal(err) + } +}