@@ -40,51 +40,74 @@ func TestFilterReference(t *testing.T) {
40
40
require .NoError (t , err )
41
41
err = alpine .Tag ("docker.io/library/image:another-tag" )
42
42
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 ... )
43
59
44
60
for _ , test := range []struct {
45
- filters []string
46
- matches int
61
+ filters []string
62
+ matchedImages int
63
+ names []string
47
64
}{
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 , []string {"localhost/image:tag" }},
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 , []string {"docker.io/library/image:another-tag" }},
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
+
72
86
// 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 , []string {"quay.io/libpod/alpine:latest" }},
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 , []string {"quay.io/libpod/alpine:latest" }},
98
+ {[]string {"docker.io/library/image@" + alpine .Digest ().String ()}, 1 , []string {"docker.io/library/image:latest" , "docker.io/library/image:another-tag" }},
99
+
78
100
// 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 , []string {"quay.io/libpod/alpine:latest" }},
104
+ {[]string {"quay.io/libpod/alpine:456@" + alpine .Digest ().String ()}, 1 , []string {"quay.io/libpod/alpine:latest" }},
105
+
83
106
// 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 {} },
88
111
} {
89
112
var filters []string
90
113
for _ , filter := range test .filters {
@@ -94,12 +117,20 @@ func TestFilterReference(t *testing.T) {
94
117
filters = append (filters , "reference=" + filter )
95
118
}
96
119
}
120
+
97
121
listOptions := & ListImagesOptions {
98
122
Filters : filters ,
99
123
}
100
124
listedImages , err := runtime .ListImages (ctx , listOptions )
125
+
101
126
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 )
103
134
}
104
135
}
105
136
0 commit comments