diff --git a/api/client/ps.go b/api/client/ps.go index e7fb97c315..88ca1ee671 100644 --- a/api/client/ps.go +++ b/api/client/ps.go @@ -95,7 +95,7 @@ func (cli *DockerCli) CmdPs(args ...string) error { f := *format if len(f) == 0 { - if len(cli.PsFormat()) > 0 { + if len(cli.PsFormat()) > 0 && !*quiet { f = cli.PsFormat() } else { f = "table" diff --git a/integration-cli/docker_cli_ps_test.go b/integration-cli/docker_cli_ps_test.go index f0f63cb36c..30b0c0ce82 100644 --- a/integration-cli/docker_cli_ps_test.go +++ b/integration-cli/docker_cli_ps_test.go @@ -2,7 +2,10 @@ package main import ( "fmt" + "io/ioutil" + "os" "os/exec" + "path/filepath" "reflect" "strconv" "strings" @@ -554,3 +557,23 @@ func (s *DockerSuite) TestPsFormatHeaders(c *check.C) { c.Fatalf(`Expected 'NAMES\ntest\n', got %v`, out) } } + +func (s *DockerSuite) TestPsDefaultFormatAndQuiet(c *check.C) { + config := `{ + "psFormat": "{{ .ID }} default" +}` + d, err := ioutil.TempDir("", "integration-cli-") + c.Assert(err, check.IsNil) + defer os.RemoveAll(d) + + err = ioutil.WriteFile(filepath.Join(d, "config.json"), []byte(config), 0644) + c.Assert(err, check.IsNil) + + out, _ := dockerCmd(c, "run", "--name=test", "-d", "busybox", "top") + id := strings.TrimSpace(out) + + out, _ = dockerCmd(c, "--config", d, "ps", "-q") + if !strings.HasPrefix(id, strings.TrimSpace(out)) { + c.Fatalf("Expected to print only the container id, got %v\n", out) + } +}