From 873989f7a413ee8acc5e137577dfaa4d38f94fbd Mon Sep 17 00:00:00 2001
From: zhangguanzhang <zhangguanzhang@qq.com>
Date: Wed, 23 Sep 2020 13:21:23 +0800
Subject: [PATCH] apiv2 container limit differ from docker-api

Signed-off-by: zhangguanzhang <zhangguanzhang@qq.com>
---
 pkg/api/handlers/compat/containers.go |  2 +-
 test/apiv2/20-containers.at           | 25 +++++++++++++++++++++++++
 2 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/pkg/api/handlers/compat/containers.go b/pkg/api/handlers/compat/containers.go
index 1c2356b927..63c44eaef3 100644
--- a/pkg/api/handlers/compat/containers.go
+++ b/pkg/api/handlers/compat/containers.go
@@ -85,7 +85,7 @@ func ListContainers(w http.ResponseWriter, r *http.Request) {
 		utils.InternalServerError(w, err)
 		return
 	}
-	if _, found := r.URL.Query()["limit"]; found && query.Limit != -1 {
+	if _, found := r.URL.Query()["limit"]; found && query.Limit > 0 {
 		last := query.Limit
 		if len(containers) > last {
 			containers = containers[len(containers)-last:]
diff --git a/test/apiv2/20-containers.at b/test/apiv2/20-containers.at
index 9ea3cb7edc..187073fb98 100644
--- a/test/apiv2/20-containers.at
+++ b/test/apiv2/20-containers.at
@@ -176,6 +176,31 @@ t GET containers/$cid/json 200 \
   .Config.Cmd='[]' \
   .Path="echo" \
   .Args[0]="param1"
+
+# create a running container for after
+t POST containers/create '"Image":"'$IMAGE'","Entrypoint":["top"]' 201 \
+  .Id~[0-9a-f]\\{64\\}
+cid_top=$(jq -r '.Id' <<<"$output")
+t GET containers/${cid_top}/json 200 \
+  .Config.Entrypoint[0]="top" \
+  .Config.Cmd='[]' \
+  .Path="top"
+t POST  containers/${cid_top}/start '' 204
+# make sure the container is running
+t GET containers/${cid_top}/json 200 \
+  .State.Status="running"
+
+# 0 means unlimited, need same with docker
+t GET containers/json?limit=0 200 \
+  .[0].Id~[0-9a-f]\\{64\\}
+
+t GET 'containers/json?limit=0&all=1' 200 \
+  .[0].Id~[0-9a-f]\\{64\\} \
+  .[1].Id~[0-9a-f]\\{64\\}
+
+t POST containers/${cid_top}/stop "" 204
+
 t DELETE containers/$cid 204
+t DELETE containers/$cid_top 204
 
 # vim: filetype=sh