cli: fix images filter when use multi reference filter

Signed-off-by: zhangyue <zy675793960@yeah.net>
This commit is contained in:
zhangyue 2018-11-10 11:00:26 +08:00
Родитель 68cbc3712c
Коммит 5007c36d71
2 изменённых файлов: 53 добавлений и 0 удалений

Просмотреть файл

@ -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)
}
}
}