github.com/zhouyu0/docker-note@v0.0.0-20190722021225-b8d3825084db/integration/image/list_test.go (about)

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