list_test.go 1.4 KB

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