github.com/docker/docker@v299999999.0.0-20200612211812-aaf470eca7b5+incompatible/integration/image/list_test.go (about)

     1  package image // import "github.com/docker/docker/integration/image"
     2  
     3  import (
     4  	"context"
     5  	"strings"
     6  	"testing"
     7  
     8  	"github.com/docker/docker/api/types"
     9  	"github.com/docker/docker/api/types/filters"
    10  	"github.com/docker/docker/api/types/versions"
    11  	"gotest.tools/v3/assert"
    12  	is "gotest.tools/v3/assert/cmp"
    13  	"gotest.tools/v3/skip"
    14  )
    15  
    16  // Regression : #38171
    17  func TestImagesFilterMultiReference(t *testing.T) {
    18  	skip.If(t, versions.LessThan(testEnv.DaemonAPIVersion(), "1.40"), "broken in earlier versions")
    19  	defer setupTest(t)()
    20  	client := testEnv.APIClient()
    21  	ctx := context.Background()
    22  
    23  	name := strings.ToLower(t.Name())
    24  	repoTags := []string{
    25  		name + ":v1",
    26  		name + ":v2",
    27  		name + ":v3",
    28  		name + ":v4",
    29  	}
    30  
    31  	for _, repoTag := range repoTags {
    32  		err := client.ImageTag(ctx, "busybox:latest", repoTag)
    33  		assert.NilError(t, err)
    34  	}
    35  
    36  	filter := filters.NewArgs()
    37  	filter.Add("reference", repoTags[0])
    38  	filter.Add("reference", repoTags[1])
    39  	filter.Add("reference", repoTags[2])
    40  	options := types.ImageListOptions{
    41  		All:     false,
    42  		Filters: filter,
    43  	}
    44  	images, err := client.ImageList(ctx, options)
    45  	assert.NilError(t, err)
    46  
    47  	assert.Check(t, is.Equal(len(images[0].RepoTags), 3))
    48  	for _, repoTag := range images[0].RepoTags {
    49  		if repoTag != repoTags[0] && repoTag != repoTags[1] && repoTag != repoTags[2] {
    50  			t.Errorf("list images doesn't match any repoTag we expected, repoTag: %s", repoTag)
    51  		}
    52  	}
    53  }