@@ -4,11 +4,11 @@ import (
4
4
"bufio"
5
5
"fmt"
6
6
"path/filepath"
7
+ "regexp"
7
8
"strings"
8
9
"testing"
9
10
10
11
"gotest.tools/assert"
11
- "gotest.tools/fs"
12
12
"gotest.tools/icmd"
13
13
)
14
14
@@ -22,10 +22,20 @@ func insertBundles(t *testing.T, cmd icmd.Cmd, info dindSwarmAndRegistryInfo) {
22
22
icmd .RunCmd (cmd ).Assert (t , icmd .Success )
23
23
}
24
24
25
+ func assertImageListOutput (t * testing.T , cmd icmd.Cmd , expected string ) {
26
+ result := icmd .RunCmd (cmd ).Assert (t , icmd .Success )
27
+ match , _ := regexp .MatchString (expected , result .Stdout ())
28
+ assert .Assert (t , match )
29
+ }
30
+
25
31
func expectImageListOutput (t * testing.T , cmd icmd.Cmd , output string ) {
26
32
cmd .Command = dockerCli .Command ("app" , "image" , "ls" )
27
- result := icmd .RunCmd (cmd ).Assert (t , icmd .Success )
28
- assert .Equal (t , result .Stdout (), output )
33
+ assertImageListOutput (t , cmd , output )
34
+ }
35
+
36
+ func expectImageListDigestsOutput (t * testing.T , cmd icmd.Cmd , output string ) {
37
+ cmd .Command = dockerCli .Command ("app" , "image" , "ls" , "--digests" )
38
+ assertImageListOutput (t , cmd , output )
29
39
}
30
40
31
41
func verifyImageIDListOutput (t * testing.T , cmd icmd.Cmd , count int , distinct int ) {
@@ -48,36 +58,44 @@ func verifyImageIDListOutput(t *testing.T, cmd icmd.Cmd, count int, distinct int
48
58
func TestImageList (t * testing.T ) {
49
59
runWithDindSwarmAndRegistry (t , func (info dindSwarmAndRegistryInfo ) {
50
60
cmd := info .configuredCmd
51
- dir := fs .NewDir (t , "" )
52
- defer dir .Remove ()
53
61
54
62
insertBundles (t , cmd , info )
55
63
56
- expected := `APP IMAGE APP NAME
57
- %s push-pull
58
- a-simple-app:latest simple
59
- b-simple-app:latest simple
64
+ expected := `REPOSITORY TAG APP IMAGE ID APP NAME
65
+ %s latest [a-f0-9]{12} push-pull
66
+ a-simple-app latest [a-f0-9]{12} simple
67
+ b-simple-app latest [a-f0-9]{12} simple
60
68
`
61
- expectedOutput := fmt .Sprintf (expected , info .registryAddress + "/c-myapp:latest " )
69
+ expectedOutput := fmt .Sprintf (expected , info .registryAddress + "/c-myapp" )
62
70
expectImageListOutput (t , cmd , expectedOutput )
63
71
})
64
72
}
65
73
66
74
func TestImageListQuiet (t * testing.T ) {
67
75
runWithDindSwarmAndRegistry (t , func (info dindSwarmAndRegistryInfo ) {
68
76
cmd := info .configuredCmd
69
- dir := fs .NewDir (t , "" )
70
- defer dir .Remove ()
71
77
insertBundles (t , cmd , info )
72
78
verifyImageIDListOutput (t , cmd , 3 , 2 )
73
79
})
74
80
}
75
81
82
+ func TestImageListDigests (t * testing.T ) {
83
+ runWithDindSwarmAndRegistry (t , func (info dindSwarmAndRegistryInfo ) {
84
+ cmd := info .configuredCmd
85
+ insertBundles (t , cmd , info )
86
+ expected := `REPOSITORY TAG DIGEST APP IMAGE ID APP NAME
87
+ %s latest <none> [a-f0-9]{12} push-pull
88
+ a-simple-app latest <none> [a-f0-9]{12} simple
89
+ b-simple-app latest <none> [a-f0-9]{12} simple
90
+ `
91
+ expectedOutput := fmt .Sprintf (expected , info .registryAddress + "/c-myapp" )
92
+ expectImageListDigestsOutput (t , cmd , expectedOutput )
93
+ })
94
+ }
95
+
76
96
func TestImageRm (t * testing.T ) {
77
97
runWithDindSwarmAndRegistry (t , func (info dindSwarmAndRegistryInfo ) {
78
98
cmd := info .configuredCmd
79
- dir := fs .NewDir (t , "" )
80
- defer dir .Remove ()
81
99
82
100
insertBundles (t , cmd , info )
83
101
@@ -100,7 +118,7 @@ Deleted: b-simple-app:latest`,
100
118
Err : `b-simple-app:latest: reference not found` ,
101
119
})
102
120
103
- expectedOutput := "APP IMAGE APP NAME\n "
121
+ expectedOutput := "REPOSITORY TAG APP IMAGE ID APP NAME\n "
104
122
expectImageListOutput (t , cmd , expectedOutput )
105
123
})
106
124
}
@@ -118,8 +136,8 @@ func TestImageTag(t *testing.T) {
118
136
cmd .Command = dockerCli .Command ("app" , "build" , "--tag" , "a-simple-app" , filepath .Join ("testdata" , "simple" ))
119
137
icmd .RunCmd (cmd ).Assert (t , icmd .Success )
120
138
121
- singleImageExpectation := `APP IMAGE APP NAME
122
- a-simple-app: latest simple
139
+ singleImageExpectation := `REPOSITORY TAG APP IMAGE ID APP NAME
140
+ a-simple-app latest [a-f0-9]{12} simple
123
141
`
124
142
expectImageListOutput (t , cmd , singleImageExpectation )
125
143
@@ -168,63 +186,63 @@ a-simple-app:latest simple
168
186
// tag image with only names
169
187
dockerAppImageTag ("a-simple-app" , "b-simple-app" )
170
188
icmd .RunCmd (cmd ).Assert (t , icmd .Success )
171
- expectImageListOutput (t , cmd , `APP IMAGE APP NAME
172
- a-simple-app: latest simple
173
- b-simple-app: latest simple
189
+ expectImageListOutput (t , cmd , `REPOSITORY TAG APP IMAGE ID APP NAME
190
+ a-simple-app latest [a-f0-9]{12} simple
191
+ b-simple-app latest [a-f0-9]{12} simple
174
192
` )
175
193
176
194
// target tag
177
195
dockerAppImageTag ("a-simple-app" , "a-simple-app:0.1" )
178
196
icmd .RunCmd (cmd ).Assert (t , icmd .Success )
179
- expectImageListOutput (t , cmd , `APP IMAGE APP NAME
180
- a-simple-app: 0.1 simple
181
- a-simple-app: latest simple
182
- b-simple-app: latest simple
197
+ expectImageListOutput (t , cmd , `REPOSITORY TAG APP IMAGE ID APP NAME
198
+ a-simple-app 0.1 [a-f0-9]{12} simple
199
+ a-simple-app latest [a-f0-9]{12} simple
200
+ b-simple-app latest [a-f0-9]{12} simple
183
201
` )
184
202
185
203
// source tag
186
204
dockerAppImageTag ("a-simple-app:0.1" , "c-simple-app" )
187
205
icmd .RunCmd (cmd ).Assert (t , icmd .Success )
188
- expectImageListOutput (t , cmd , `APP IMAGE APP NAME
189
- a-simple-app: 0.1 simple
190
- a-simple-app: latest simple
191
- b-simple-app: latest simple
192
- c-simple-app: latest simple
206
+ expectImageListOutput (t , cmd , `REPOSITORY TAG APP IMAGE ID APP NAME
207
+ a-simple-app 0.1 [a-f0-9]{12} simple
208
+ a-simple-app latest [a-f0-9]{12} simple
209
+ b-simple-app latest [a-f0-9]{12} simple
210
+ c-simple-app latest [a-f0-9]{12} simple
193
211
` )
194
212
195
213
// source and target tags
196
214
dockerAppImageTag ("a-simple-app:0.1" , "b-simple-app:0.2" )
197
215
icmd .RunCmd (cmd ).Assert (t , icmd .Success )
198
- expectImageListOutput (t , cmd , `APP IMAGE APP NAME
199
- a-simple-app: 0.1 simple
200
- a-simple-app: latest simple
201
- b-simple-app: 0.2 simple
202
- b-simple-app: latest simple
203
- c-simple-app: latest simple
216
+ expectImageListOutput (t , cmd , `REPOSITORY TAG APP IMAGE ID APP NAME
217
+ a-simple-app 0.1 [a-f0-9]{12} simple
218
+ a-simple-app latest [a-f0-9]{12} simple
219
+ b-simple-app 0.2 [a-f0-9]{12} simple
220
+ b-simple-app latest [a-f0-9]{12} simple
221
+ c-simple-app latest [a-f0-9]{12} simple
204
222
` )
205
223
206
224
// given a new application
207
225
cmd .Command = dockerCli .Command ("app" , "build" , "--tag" , "push-pull" , filepath .Join ("testdata" , "push-pull" ))
208
226
icmd .RunCmd (cmd ).Assert (t , icmd .Success )
209
- expectImageListOutput (t , cmd , `APP IMAGE APP NAME
210
- a-simple-app: 0.1 simple
211
- a-simple-app: latest simple
212
- b-simple-app: 0.2 simple
213
- b-simple-app: latest simple
214
- c-simple-app: latest simple
215
- push-pull:latest push-pull
227
+ expectImageListOutput (t , cmd , `REPOSITORY TAG APP IMAGE ID APP NAME
228
+ a-simple-app 0.1 [a-f0-9]{12} simple
229
+ a-simple-app latest [a-f0-9]{12} simple
230
+ b-simple-app 0.2 [a-f0-9]{12} simple
231
+ b-simple-app latest [a-f0-9]{12} simple
232
+ c-simple-app latest [a-f0-9]{12} simple
233
+ push-pull latest [a-f0-9]{12} push-pull
216
234
` )
217
235
218
236
// can be tagged to an existing tag
219
237
dockerAppImageTag ("push-pull" , "b-simple-app:0.2" )
220
238
icmd .RunCmd (cmd ).Assert (t , icmd .Success )
221
- expectImageListOutput (t , cmd , `APP IMAGE APP NAME
222
- a-simple-app: 0.1 simple
223
- a-simple-app: latest simple
224
- b-simple-app: 0.2 push-pull
225
- b-simple-app: latest simple
226
- c-simple-app: latest simple
227
- push-pull:latest push-pull
239
+ expectImageListOutput (t , cmd , `REPOSITORY TAG APP IMAGE ID APP NAME
240
+ a-simple-app 0.1 [a-f0-9]{12} simple
241
+ a-simple-app latest [a-f0-9]{12} simple
242
+ b-simple-app 0.2 [a-f0-9]{12} push-pull
243
+ b-simple-app latest [a-f0-9]{12} simple
244
+ c-simple-app latest [a-f0-9]{12} simple
245
+ push-pull latest [a-f0-9]{12} push-pull
228
246
` )
229
247
})
230
248
}
0 commit comments