cli: fix images filter when use multi reference filter
Signed-off-by: zhangyue <zy675793960@yeah.net> (cherry picked from commit 5007c36d71ac86f5b47b6ba10a5ed6e841807284) Signed-off-by: Sebastiaan van Stijn <github@gone.nl> Upstream-commit: 8a614d1b2494b6d2381e157a99ad2736a6038d2d Component: engine
This commit is contained in:
committed by
Sebastiaan van Stijn
parent
04efd9ec4a
commit
c975557150
@@ -152,6 +152,9 @@ func (i *ImageService) Images(imageFilters filters.Args, all bool, withExtraAttr
|
||||
if matchErr != nil {
|
||||
return nil, matchErr
|
||||
}
|
||||
if found {
|
||||
break
|
||||
}
|
||||
}
|
||||
if !found {
|
||||
continue
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
package image // import "github.com/docker/docker/integration/image"
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
|
||||
"github.com/docker/docker/api/types"
|
||||
"github.com/docker/docker/api/types/filters"
|
||||
"github.com/docker/docker/internal/test/request"
|
||||
"gotest.tools/assert"
|
||||
is "gotest.tools/assert/cmp"
|
||||
)
|
||||
|
||||
// Regression : #38171
|
||||
func TestImagesFilterMultiReference(t *testing.T) {
|
||||
defer setupTest(t)()
|
||||
client := request.NewAPIClient(t)
|
||||
ctx := context.Background()
|
||||
|
||||
name := "images_filter_multi_reference"
|
||||
repoTags := []string{
|
||||
name + ":v1",
|
||||
name + ":v2",
|
||||
name + ":v3",
|
||||
name + ":v4",
|
||||
}
|
||||
|
||||
for _, repoTag := range repoTags {
|
||||
err := client.ImageTag(ctx, "busybox:latest", repoTag)
|
||||
assert.NilError(t, err)
|
||||
}
|
||||
|
||||
filter := filters.NewArgs()
|
||||
filter.Add("reference", repoTags[0])
|
||||
filter.Add("reference", repoTags[1])
|
||||
filter.Add("reference", repoTags[2])
|
||||
options := types.ImageListOptions{
|
||||
All: false,
|
||||
Filters: filter,
|
||||
}
|
||||
images, err := client.ImageList(ctx, options)
|
||||
assert.NilError(t, err)
|
||||
|
||||
assert.Check(t, is.Equal(len(images[0].RepoTags), 3))
|
||||
for _, repoTag := range images[0].RepoTags {
|
||||
if repoTag != repoTags[0] && repoTag != repoTags[1] && repoTag != repoTags[2] {
|
||||
t.Errorf("list images doesn't match any repoTag we expected, repoTag: %s", repoTag)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user