Skip to content
This repository was archived by the owner on Jul 18, 2025. It is now read-only.

Commit d5e1ff5

Browse files
committed
table minwidth is 20
set by cli/command/formatter/formatter.go#postFromat Signed-off-by: Nicolas De Loof <[email protected]>
1 parent 04a69f8 commit d5e1ff5

File tree

3 files changed

+70
-56
lines changed

3 files changed

+70
-56
lines changed

e2e/images_test.go

Lines changed: 44 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,12 @@ func TestImageList(t *testing.T) {
6666

6767
insertBundles(t, cmd)
6868

69-
expected := `REPOSITORY TAG APP IMAGE ID APP NAME CREATED
70-
a-simple-app latest [a-f0-9]{12} simple [La-z0-9 ]+ ago
71-
b-simple-app latest [a-f0-9]{12} simple [La-z0-9 ]+ ago
72-
my.registry:5000/c-myapp latest [a-f0-9]{12} push-pull [La-z0-9 ]+ ago
69+
expected := `REPOSITORY TAG APP IMAGE ID APP NAME CREATED
70+
a-simple-app latest [a-f0-9]{12} simple [La-z0-9 ]+ ago[ ]*
71+
b-simple-app latest [a-f0-9]{12} simple [La-z0-9 ]+ ago[ ]*
72+
my.registry:5000/c-myapp latest [a-f0-9]{12} push-pull [La-z0-9 ]+ ago[ ]*
7373
`
74+
7475
expectImageListOutput(t, cmd, expected)
7576
})
7677
}
@@ -87,10 +88,10 @@ func TestImageListDigests(t *testing.T) {
8788
runWithDindSwarmAndRegistry(t, func(info dindSwarmAndRegistryInfo) {
8889
cmd := info.configuredCmd
8990
insertBundles(t, cmd)
90-
expected := `REPOSITORY TAG DIGEST APP IMAGE ID APP NAME CREATED
91-
a-simple-app latest <none> [a-f0-9]{12} simple [La-z0-9 ]+ ago
92-
b-simple-app latest <none> [a-f0-9]{12} simple [La-z0-9 ]+ ago
93-
my.registry:5000/c-myapp latest <none> [a-f0-9]{12} push-pull [La-z0-9 ]+ ago
91+
expected := `REPOSITORY TAG DIGEST APP IMAGE ID APP NAME CREATED
92+
a-simple-app latest <none> [a-f0-9]{12} simple [La-z0-9 ]+ ago[ ]*
93+
b-simple-app latest <none> [a-f0-9]{12} simple [La-z0-9 ]+ ago[ ]*
94+
my.registry:5000/c-myapp latest <none> [a-f0-9]{12} push-pull [La-z0-9 ]+ ago[ ]*
9495
`
9596
expectImageListDigestsOutput(t, cmd, expected)
9697
})
@@ -121,7 +122,7 @@ Deleted: b-simple-app:latest`,
121122
Err: `b-simple-app:latest: reference not found`,
122123
})
123124

124-
expectedOutput := "REPOSITORY TAG APP IMAGE ID APP NAME CREATED\n"
125+
expectedOutput := "REPOSITORY TAG APP IMAGE ID APP NAME CREATED \n"
125126
expectImageListOutput(t, cmd, expectedOutput)
126127
})
127128
}
@@ -139,8 +140,8 @@ func TestImageTag(t *testing.T) {
139140
cmd.Command = dockerCli.Command("app", "build", "--tag", "a-simple-app", filepath.Join("testdata", "simple"))
140141
icmd.RunCmd(cmd).Assert(t, icmd.Success)
141142

142-
singleImageExpectation := `REPOSITORY TAG APP IMAGE ID APP NAME CREATED
143-
a-simple-app latest [a-f0-9]{12} simple [La-z0-9 ]+ ago
143+
singleImageExpectation := `REPOSITORY TAG APP IMAGE ID APP NAME CREATED[ ]*
144+
a-simple-app latest [a-f0-9]{12} simple [La-z0-9 ]+ ago[ ]*
144145
`
145146
expectImageListOutput(t, cmd, singleImageExpectation)
146147

@@ -189,63 +190,63 @@ a-simple-app latest [a-f0-9]{12} simple [La-z0-9 ]+ ago
189190
// tag image with only names
190191
dockerAppImageTag("a-simple-app", "b-simple-app")
191192
icmd.RunCmd(cmd).Assert(t, icmd.Success)
192-
expectImageListOutput(t, cmd, `REPOSITORY TAG APP IMAGE ID APP NAME CREATED
193-
a-simple-app latest [a-f0-9]{12} simple [La-z0-9 ]+ ago
194-
b-simple-app latest [a-f0-9]{12} simple [La-z0-9 ]+ ago
193+
expectImageListOutput(t, cmd, `REPOSITORY TAG APP IMAGE ID APP NAME CREATED[ ]*
194+
a-simple-app latest [a-f0-9]{12} simple [La-z0-9 ]+ ago[ ]*
195+
b-simple-app latest [a-f0-9]{12} simple [La-z0-9 ]+ ago[ ]*
195196
`)
196197

197198
// target tag
198199
dockerAppImageTag("a-simple-app", "a-simple-app:0.1")
199200
icmd.RunCmd(cmd).Assert(t, icmd.Success)
200-
expectImageListOutput(t, cmd, `REPOSITORY TAG APP IMAGE ID APP NAME CREATED
201-
a-simple-app 0.1 [a-f0-9]{12} simple [La-z0-9 ]+ ago
202-
a-simple-app latest [a-f0-9]{12} simple [La-z0-9 ]+ ago
203-
b-simple-app latest [a-f0-9]{12} simple [La-z0-9 ]+ ago
201+
expectImageListOutput(t, cmd, `REPOSITORY TAG APP IMAGE ID APP NAME CREATED[ ]*
202+
a-simple-app 0.1 [a-f0-9]{12} simple [La-z0-9 ]+ ago[ ]*
203+
a-simple-app latest [a-f0-9]{12} simple [La-z0-9 ]+ ago[ ]*
204+
b-simple-app latest [a-f0-9]{12} simple [La-z0-9 ]+ ago[ ]*
204205
`)
205206

206207
// source tag
207208
dockerAppImageTag("a-simple-app:0.1", "c-simple-app")
208209
icmd.RunCmd(cmd).Assert(t, icmd.Success)
209-
expectImageListOutput(t, cmd, `REPOSITORY TAG APP IMAGE ID APP NAME CREATED
210-
a-simple-app 0.1 [a-f0-9]{12} simple [La-z0-9 ]+ ago
211-
a-simple-app latest [a-f0-9]{12} simple [La-z0-9 ]+ ago
212-
b-simple-app latest [a-f0-9]{12} simple [La-z0-9 ]+ ago
213-
c-simple-app latest [a-f0-9]{12} simple [La-z0-9 ]+ ago
210+
expectImageListOutput(t, cmd, `REPOSITORY TAG APP IMAGE ID APP NAME CREATED[ ]*
211+
a-simple-app 0.1 [a-f0-9]{12} simple [La-z0-9 ]+ ago[ ]*
212+
a-simple-app latest [a-f0-9]{12} simple [La-z0-9 ]+ ago[ ]*
213+
b-simple-app latest [a-f0-9]{12} simple [La-z0-9 ]+ ago[ ]*
214+
c-simple-app latest [a-f0-9]{12} simple [La-z0-9 ]+ ago[ ]*
214215
`)
215216

216217
// source and target tags
217218
dockerAppImageTag("a-simple-app:0.1", "b-simple-app:0.2")
218219
icmd.RunCmd(cmd).Assert(t, icmd.Success)
219-
expectImageListOutput(t, cmd, `REPOSITORY TAG APP IMAGE ID APP NAME CREATED
220-
a-simple-app 0.1 [a-f0-9]{12} simple [La-z0-9 ]+ ago
221-
a-simple-app latest [a-f0-9]{12} simple [La-z0-9 ]+ ago
222-
b-simple-app 0.2 [a-f0-9]{12} simple [La-z0-9 ]+ ago
223-
b-simple-app latest [a-f0-9]{12} simple [La-z0-9 ]+ ago
224-
c-simple-app latest [a-f0-9]{12} simple [La-z0-9 ]+ ago
220+
expectImageListOutput(t, cmd, `REPOSITORY TAG APP IMAGE ID APP NAME CREATED[ ]*
221+
a-simple-app 0.1 [a-f0-9]{12} simple [La-z0-9 ]+ ago[ ]*
222+
a-simple-app latest [a-f0-9]{12} simple [La-z0-9 ]+ ago[ ]*
223+
b-simple-app 0.2 [a-f0-9]{12} simple [La-z0-9 ]+ ago[ ]*
224+
b-simple-app latest [a-f0-9]{12} simple [La-z0-9 ]+ ago[ ]*
225+
c-simple-app latest [a-f0-9]{12} simple [La-z0-9 ]+ ago[ ]*
225226
`)
226227

227228
// given a new application
228229
cmd.Command = dockerCli.Command("app", "build", "--tag", "push-pull", filepath.Join("testdata", "push-pull"))
229230
icmd.RunCmd(cmd).Assert(t, icmd.Success)
230-
expectImageListOutput(t, cmd, `REPOSITORY TAG APP IMAGE ID APP NAME CREATED
231-
a-simple-app 0.1 [a-f0-9]{12} simple [La-z0-9 ]+ ago
232-
a-simple-app latest [a-f0-9]{12} simple [La-z0-9 ]+ ago
233-
b-simple-app 0.2 [a-f0-9]{12} simple [La-z0-9 ]+ ago
234-
b-simple-app latest [a-f0-9]{12} simple [La-z0-9 ]+ ago
235-
c-simple-app latest [a-f0-9]{12} simple [La-z0-9 ]+ ago
236-
push-pull latest [a-f0-9]{12} push-pull [La-z0-9 ]+ ago
231+
expectImageListOutput(t, cmd, `REPOSITORY TAG APP IMAGE ID APP NAME CREATED[ ]*
232+
a-simple-app 0.1 [a-f0-9]{12} simple [La-z0-9 ]+ ago[ ]*
233+
a-simple-app latest [a-f0-9]{12} simple [La-z0-9 ]+ ago[ ]*
234+
b-simple-app 0.2 [a-f0-9]{12} simple [La-z0-9 ]+ ago[ ]*
235+
b-simple-app latest [a-f0-9]{12} simple [La-z0-9 ]+ ago[ ]*
236+
c-simple-app latest [a-f0-9]{12} simple [La-z0-9 ]+ ago[ ]*
237+
push-pull latest [a-f0-9]{12} push-pull [La-z0-9 ]+ ago[ ]*
237238
`)
238239

239240
// can be tagged to an existing tag
240241
dockerAppImageTag("push-pull", "b-simple-app:0.2")
241242
icmd.RunCmd(cmd).Assert(t, icmd.Success)
242-
expectImageListOutput(t, cmd, `REPOSITORY TAG APP IMAGE ID APP NAME CREATED
243-
a-simple-app 0.1 [a-f0-9]{12} simple [La-z0-9 ]+ ago
244-
a-simple-app latest [a-f0-9]{12} simple [La-z0-9 ]+ ago
245-
b-simple-app 0.2 [a-f0-9]{12} push-pull [La-z0-9 ]+ ago
246-
b-simple-app latest [a-f0-9]{12} simple [La-z0-9 ]+ ago
247-
c-simple-app latest [a-f0-9]{12} simple [La-z0-9 ]+ ago
248-
push-pull latest [a-f0-9]{12} push-pull [La-z0-9 ]+ ago
243+
expectImageListOutput(t, cmd, `REPOSITORY TAG APP IMAGE ID APP NAME CREATED[ ]*
244+
a-simple-app 0.1 [a-f0-9]{12} simple [La-z0-9 ]+ ago[ ]*
245+
a-simple-app latest [a-f0-9]{12} simple [La-z0-9 ]+ ago[ ]*
246+
b-simple-app 0.2 [a-f0-9]{12} push-pull [La-z0-9 ]+ ago[ ]*
247+
b-simple-app latest [a-f0-9]{12} simple [La-z0-9 ]+ ago[ ]*
248+
c-simple-app latest [a-f0-9]{12} simple [La-z0-9 ]+ ago[ ]*
249+
push-pull latest [a-f0-9]{12} push-pull [La-z0-9 ]+ ago[ ]*
249250
`)
250251
})
251252
}

internal/commands/image/formatter.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ import (
1010

1111
const (
1212
defaultImageTableFormat = "table {{.Repository}}\t{{.Tag}}\t{{.ID}}\t{{.Name}}\t{{if .CreatedSince }}{{.CreatedSince}}{{else}}N/A{{end}}\t"
13-
defaultImageTableFormatWithDigest = "table {{.Repository}}\t{{.Tag}}\t{{.Digest}}\t{{.ID}}{{.Name}}\t\t{{if .CreatedSince }}{{.CreatedSince}}{{else}}N/A{{end}}\t"
13+
defaultImageTableFormatWithDigest = "table {{.Repository}}\t{{.Tag}}\t{{.Digest}}\t{{.ID}}\t{{.Name}}\t\t{{if .CreatedSince }}{{.CreatedSince}}{{else}}N/A{{end}}\t"
1414

15-
imageIDHeader = "APP ID"
15+
imageIDHeader = "APP IMAGE ID"
1616
repositoryHeader = "REPOSITORY"
1717
tagHeader = "TAG"
1818
digestHeader = "DIGEST"
@@ -112,6 +112,9 @@ func (c *imageContext) Tag() string {
112112
}
113113

114114
func (c *imageContext) Digest() string {
115+
if c.i.Digest == "" {
116+
return "<none>"
117+
}
115118
return c.i.Digest
116119
}
117120

internal/commands/image/list_test.go

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -83,29 +83,39 @@ func TestListCmd(t *testing.T) {
8383
}{
8484
{
8585
name: "TestList",
86-
expectedOutput: `REPOSITORY TAG APP IMAGE ID APP NAME CREATED
87-
foo/bar <none> 3f825b2d0657 Digested App
88-
foo/bar 1.0 9aae408ee04f Foo App
89-
<none> <none> a855ac937f2e Quiet App
86+
expectedOutput: `REPOSITORY TAG APP IMAGE ID APP NAME CREATED
87+
foo/bar <none> 3f825b2d0657 Digested App N/A
88+
foo/bar 1.0 9aae408ee04f Foo App N/A
89+
<none> <none> a855ac937f2e Quiet App N/A
9090
`,
91-
options: imageListOption{},
91+
options: imageListOption{format: "table"},
92+
},
93+
{
94+
name: "TestTemplate",
95+
expectedOutput: `APP IMAGE ID DIGEST
96+
3f825b2d0657 sha256:b59492bb814012ca3d2ce0b6728242d96b4af41687cc82166a4b5d7f2d9fb865
97+
9aae408ee04f <none>
98+
a855ac937f2e sha256:a855ac937f2ed375ba4396bbc49c4093e124da933acd2713fb9bc17d7562a087
99+
`,
100+
options: imageListOption{format: "table {{.ID}}", digests: true},
92101
},
93102
{
94103
name: "TestListWithDigests",
95-
expectedOutput: `REPOSITORY TAG DIGEST APP IMAGE ID APP NAME CREATED
96-
foo/bar <none> sha256:b59492bb814012ca3d2ce0b6728242d96b4af41687cc82166a4b5d7f2d9fb865 3f825b2d0657 Digested App
97-
foo/bar 1.0 <none> 9aae408ee04f Foo App
98-
<none> <none> sha256:a855ac937f2ed375ba4396bbc49c4093e124da933acd2713fb9bc17d7562a087 a855ac937f2e Quiet App
104+
//nolint:lll
105+
expectedOutput: `REPOSITORY TAG DIGEST APP IMAGE ID APP NAME CREATED
106+
foo/bar <none> sha256:b59492bb814012ca3d2ce0b6728242d96b4af41687cc82166a4b5d7f2d9fb865 3f825b2d0657 Digested App N/A
107+
foo/bar 1.0 <none> 9aae408ee04f Foo App N/A
108+
<none> <none> sha256:a855ac937f2ed375ba4396bbc49c4093e124da933acd2713fb9bc17d7562a087 a855ac937f2e Quiet App N/A
99109
`,
100-
options: imageListOption{digests: true},
110+
options: imageListOption{format: "table", digests: true},
101111
},
102112
{
103113
name: "TestListWithQuiet",
104114
expectedOutput: `3f825b2d0657
105115
9aae408ee04f
106116
a855ac937f2e
107117
`,
108-
options: imageListOption{quiet: true},
118+
options: imageListOption{format: "table", quiet: true},
109119
},
110120
}
111121

0 commit comments

Comments
 (0)