Skip to content

Commit 7754dd5

Browse files
committed
Improve filter tests by verifying image names
Signed-off-by: Jan Rodák <hony.com@seznam.cz>
1 parent 2d2b7a4 commit 7754dd5

1 file changed

Lines changed: 71 additions & 40 deletions

File tree

libimage/filters_test.go

Lines changed: 71 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -40,51 +40,74 @@ func TestFilterReference(t *testing.T) {
4040
require.NoError(t, err)
4141
err = alpine.Tag("docker.io/library/image:another-tag")
4242
require.NoError(t, err)
43+
err = alpine.Tag("docker.io/library/image:latest")
44+
require.NoError(t, err)
45+
46+
allAlpineNames := []string{
47+
"docker.io/library/image:another-tag",
48+
"quay.io/libpod/alpine:latest",
49+
"localhost/another-image:tag",
50+
"docker.io/library/image:latest",
51+
}
52+
allBusyBoxNames := []string{
53+
"quay.io/libpod/busybox:latest",
54+
"localhost/image:tag",
55+
}
56+
allNames := []string{}
57+
allNames = append(allNames, allBusyBoxNames...)
58+
allNames = append(allNames, allAlpineNames...)
4359

4460
for _, test := range []struct {
45-
filters []string
46-
matches int
61+
filters []string
62+
matchedImages int
63+
names []string
4764
}{
48-
{[]string{"image"}, 2},
49-
{[]string{"*mage*"}, 2},
50-
{[]string{"image:*"}, 2},
51-
{[]string{"image:tag"}, 1},
52-
{[]string{"image:another-tag"}, 1},
53-
{[]string{"localhost/image"}, 1},
54-
{[]string{"localhost/image:tag"}, 1},
55-
{[]string{"library/image"}, 1},
56-
{[]string{"docker.io/library/image*"}, 1},
57-
{[]string{"docker.io/library/image:*"}, 1},
58-
{[]string{"docker.io/library/image:another-tag"}, 1},
59-
{[]string{"localhost/*"}, 2},
60-
{[]string{"localhost/image:*tag"}, 1},
61-
{[]string{"localhost/*mage:*ag"}, 2},
62-
{[]string{"quay.io/libpod/busybox"}, 1},
63-
{[]string{"quay.io/libpod/alpine"}, 1},
64-
{[]string{"quay.io/libpod"}, 0},
65-
{[]string{"quay.io/libpod/*"}, 2},
66-
{[]string{"busybox"}, 1},
67-
{[]string{"alpine"}, 1},
68-
{[]string{"alpine@" + alpine.Digest().String()}, 1},
69-
{[]string{"alpine:latest@" + alpine.Digest().String()}, 1},
70-
{[]string{"quay.io/libpod/alpine@" + alpine.Digest().String()}, 1},
71-
{[]string{"quay.io/libpod/alpine:latest@" + alpine.Digest().String()}, 1},
65+
{[]string{"image"}, 2, allNames},
66+
{[]string{"*mage*"}, 2, allNames},
67+
{[]string{"image:*"}, 2, allNames},
68+
{[]string{"image:tag"}, 1, allBusyBoxNames},
69+
{[]string{"image:another-tag"}, 1, allAlpineNames},
70+
{[]string{"localhost/image"}, 1, allBusyBoxNames},
71+
{[]string{"localhost/image:tag"}, 1, allBusyBoxNames},
72+
{[]string{"library/image"}, 1, allAlpineNames},
73+
{[]string{"docker.io/library/image*"}, 1, allAlpineNames},
74+
{[]string{"docker.io/library/image:*"}, 1, allAlpineNames},
75+
{[]string{"docker.io/library/image:another-tag"}, 1, allAlpineNames},
76+
{[]string{"localhost/*"}, 2, allNames},
77+
{[]string{"localhost/image:*tag"}, 1, allBusyBoxNames},
78+
{[]string{"localhost/*mage:*ag"}, 2, allNames},
79+
{[]string{"quay.io/libpod/busybox"}, 1, allBusyBoxNames},
80+
{[]string{"quay.io/libpod/alpine"}, 1, allAlpineNames},
81+
{[]string{"quay.io/libpod"}, 0, []string{}},
82+
{[]string{"quay.io/libpod/*"}, 2, allNames},
83+
{[]string{"busybox"}, 1, allBusyBoxNames},
84+
{[]string{"alpine"}, 1, allAlpineNames},
85+
7286
// Make sure negate works as expected
73-
{[]string{"!alpine"}, 1},
74-
{[]string{"!alpine", "!busybox"}, 0},
75-
{[]string{"!alpine", "busybox"}, 1},
76-
{[]string{"alpine", "busybox"}, 2},
77-
{[]string{"*test", "!*box"}, 1},
87+
{[]string{"!alpine"}, 1, allBusyBoxNames},
88+
{[]string{"!alpine", "!busybox"}, 0, []string{}},
89+
{[]string{"!alpine", "busybox"}, 1, allBusyBoxNames},
90+
{[]string{"alpine", "busybox"}, 2, allNames},
91+
{[]string{"*test", "!*box"}, 1, allAlpineNames},
92+
93+
{[]string{"quay.io/libpod/alpine@" + alpine.Digest().String()}, 1, allAlpineNames},
94+
95+
{[]string{"alpine@" + alpine.Digest().String()}, 1, allAlpineNames},
96+
{[]string{"alpine:latest@" + alpine.Digest().String()}, 1, allAlpineNames},
97+
{[]string{"quay.io/libpod/alpine:latest@" + alpine.Digest().String()}, 1, allAlpineNames},
98+
{[]string{"docker.io/library/image@" + alpine.Digest().String()}, 1, allAlpineNames},
99+
78100
// Make sure that tags are ignored
79-
{[]string{"alpine:ignoreme@" + alpine.Digest().String()}, 1},
80-
{[]string{"alpine:123@" + alpine.Digest().String()}, 1},
81-
{[]string{"quay.io/libpod/alpine:hurz@" + alpine.Digest().String()}, 1},
82-
{[]string{"quay.io/libpod/alpine:456@" + alpine.Digest().String()}, 1},
101+
{[]string{"alpine:ignoreme@" + alpine.Digest().String()}, 1, allAlpineNames},
102+
{[]string{"alpine:123@" + alpine.Digest().String()}, 1, allAlpineNames},
103+
{[]string{"quay.io/libpod/alpine:hurz@" + alpine.Digest().String()}, 1, allAlpineNames},
104+
{[]string{"quay.io/libpod/alpine:456@" + alpine.Digest().String()}, 1, allAlpineNames},
105+
83106
// Make sure that repo and digest must match
84-
{[]string{"alpine:busyboxdigest@" + busybox.Digest().String()}, 0},
85-
{[]string{"alpine:busyboxdigest@" + busybox.Digest().String()}, 0},
86-
{[]string{"quay.io/libpod/alpine:busyboxdigest@" + busybox.Digest().String()}, 0},
87-
{[]string{"quay.io/libpod/alpine:busyboxdigest@" + busybox.Digest().String()}, 0},
107+
{[]string{"alpine:busyboxdigest@" + busybox.Digest().String()}, 0, []string{}},
108+
{[]string{"alpine:busyboxdigest@" + busybox.Digest().String()}, 0, []string{}},
109+
{[]string{"quay.io/libpod/alpine:busyboxdigest@" + busybox.Digest().String()}, 0, []string{}},
110+
{[]string{"quay.io/libpod/alpine:busyboxdigest@" + busybox.Digest().String()}, 0, []string{}},
88111
} {
89112
var filters []string
90113
for _, filter := range test.filters {
@@ -94,12 +117,20 @@ func TestFilterReference(t *testing.T) {
94117
filters = append(filters, "reference="+filter)
95118
}
96119
}
120+
97121
listOptions := &ListImagesOptions{
98122
Filters: filters,
99123
}
100124
listedImages, err := runtime.ListImages(ctx, listOptions)
125+
101126
require.NoError(t, err, "%v", test)
102-
require.Len(t, listedImages, test.matches, "%s -> %v", test.filters, listedImages)
127+
require.Len(t, listedImages, test.matchedImages, "%s -> %v", test.filters, listedImages)
128+
129+
resultNames := []string{}
130+
for _, image := range listedImages {
131+
resultNames = append(resultNames, image.Names()...)
132+
}
133+
require.ElementsMatch(t, test.names, resultNames, "filters: %s ", test.filters)
103134
}
104135
}
105136

0 commit comments

Comments
 (0)