From 619a39f7bb2275a086651fcf31619959f6d15c6b Mon Sep 17 00:00:00 2001 From: Qi Wang Date: Thu, 1 Aug 2019 15:35:26 -0400 Subject: fix search output limit close https://bugzilla.redhat.com/show_bug.cgi?id=1732280 From the bug Podman search returns 25 results even when limit option `--limit` is larger than 25(maxQueries). They want Podman to return `--limit` results. This PR fixes the number of output result. if --limit not set, return MIN(maxQueries, len(res)) if --limit is set, return MIN(option, len(res)) Signed-off-by: Qi Wang --- docs/podman-search.1.md | 4 ++-- libpod/image/search.go | 7 +++++-- test/e2e/search_test.go | 12 +++++++++++- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/docs/podman-search.1.md b/docs/podman-search.1.md index f0a696494..c68f94347 100644 --- a/docs/podman-search.1.md +++ b/docs/podman-search.1.md @@ -11,8 +11,8 @@ podman\-search - Search a registry for an image The user can specify which registry to search by prefixing the registry in the search term (example **registry.fedoraproject.org/fedora**), default is the registries in the **registries.search** table in the config file - **/etc/containers/registries.conf**. -The number of results can be limited using the **--limit** flag. If more than one registry -is being searched, the limit will be applied to each registry. The output can be filtered +The default number of results is 25. The number of results can be limited using the **--limit** flag. +If more than one registry is being searched, the limit will be applied to each registry. The output can be filtered using the **--filter** flag. To get all available images in a registry without a specific search term, the user can just enter the registry name with a trailing "/" (example **registry.fedoraproject.org/**). Note, searching without a search term will only work for registries that implement the v2 API. diff --git a/libpod/image/search.go b/libpod/image/search.go index e557431c6..82ef4f75a 100644 --- a/libpod/image/search.go +++ b/libpod/image/search.go @@ -162,8 +162,11 @@ func searchImageInRegistry(term string, registry string, options SearchOptions) if len(results) < limit { limit = len(results) } - if options.Limit != 0 && options.Limit < len(results) { - limit = options.Limit + if options.Limit != 0 { + limit = len(results) + if options.Limit < len(results) { + limit = options.Limit + } } paramsArr := []SearchResult{} diff --git a/test/e2e/search_test.go b/test/e2e/search_test.go index 3b1da859c..9c28849f0 100644 --- a/test/e2e/search_test.go +++ b/test/e2e/search_test.go @@ -118,10 +118,20 @@ registries = ['{{.Host}}:{{.Port}}']` }) It("podman search limit flag", func() { - search := podmanTest.Podman([]string{"search", "--limit", "3", "docker.io/alpine"}) + search := podmanTest.Podman([]string{"search", "docker.io/alpine"}) + search.WaitWithDefaultTimeout() + Expect(search.ExitCode()).To(Equal(0)) + Expect(len(search.OutputToStringArray())).To(Equal(26)) + + search = podmanTest.Podman([]string{"search", "--limit", "3", "docker.io/alpine"}) search.WaitWithDefaultTimeout() Expect(search.ExitCode()).To(Equal(0)) Expect(len(search.OutputToStringArray())).To(Equal(4)) + + search = podmanTest.Podman([]string{"search", "--limit", "30", "docker.io/alpine"}) + search.WaitWithDefaultTimeout() + Expect(search.ExitCode()).To(Equal(0)) + Expect(len(search.OutputToStringArray())).To(Equal(31)) }) It("podman search with filter stars", func() { -- cgit v1.2.3-54-g00ecf