From 26bd5e3a2da3157f0bcb6654c30b6eccedf7f3f3 Mon Sep 17 00:00:00 2001 From: Antonio Murdaca Date: Fri, 18 Sep 2015 18:39:14 +0200 Subject: [PATCH] Fix GET /containers/json emtpy response regression GET /containers/json route used to reply with and empty array `[]` when no containers where available. Daemon containers list refactor introduced this bug by declaring an empty slice istead of initializing it as well and it was now replying with `null`. Signed-off-by: Antonio Murdaca --- daemon/list.go | 2 +- integration-cli/docker_api_containers_test.go | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/daemon/list.go b/daemon/list.go index 703ecf0558..75420c645a 100644 --- a/daemon/list.go +++ b/daemon/list.go @@ -84,7 +84,7 @@ func (daemon *Daemon) Containers(config *ContainersConfig) ([]*types.Container, // reduceContainer parses the user filtering and generates the list of containers to return based on a reducer. func (daemon *Daemon) reduceContainers(config *ContainersConfig, reducer containerReducer) ([]*types.Container, error) { - var containers []*types.Container + containers := []*types.Container{} ctx, err := daemon.foldFilter(config) if err != nil { diff --git a/integration-cli/docker_api_containers_test.go b/integration-cli/docker_api_containers_test.go index 0c1f47db10..3927297ac2 100644 --- a/integration-cli/docker_api_containers_test.go +++ b/integration-cli/docker_api_containers_test.go @@ -1514,3 +1514,14 @@ func (s *DockerSuite) TestPutContainerArchiveErrSymlinkInVolumeToReadOnlyRootfs( c.Fatalf("expected ErrContainerRootfsReadonly error, but got %d: %s", statusCode, string(body)) } } + +func (s *DockerSuite) TestContainersApiGetContainersJSONEmpty(c *check.C) { + testRequires(c, DaemonIsLinux) + + status, body, err := sockRequest("GET", "/containers/json?all=1", nil) + c.Assert(err, check.IsNil) + c.Assert(status, check.Equals, http.StatusOK) + if string(body) != "[]\n" { + c.Fatalf("Expected empty response to be `[]`, got %q", string(body)) + } +}