cli/command/system: TestVersionFormat: use table-test and struct literal

- Use a table-test to more easily allow adding test-cases
- Use the test-name itself as name for the golden file
- Use a struct-literal to create the fixture for formatting.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
Sebastiaan van Stijn
2025-08-22 09:07:17 +02:00
parent 58bb45c37f
commit e06e758d5f
4 changed files with 81 additions and 79 deletions

View File

@ -0,0 +1 @@
{"Client":{"Version":"18.99.5-ce","ApiVersion":"1.38","DefaultAPIVersion":"1.38","GitCommit":"deadbeef","GoVersion":"go1.10.2","Os":"linux","Arch":"amd64","BuildTime":"Wed May 30 22:21:05 2018","Context":"my-context"},"Server":{"Platform":{"Name":"Docker Enterprise Edition (EE) 2.0"},"Components":[{"Name":"Engine","Version":"17.06.2-ee-15","Details":{"ApiVersion":"1.30","Arch":"amd64","BuildTime":"Mon Jul 9 23:38:38 2018","Experimental":"false","GitCommit":"64ddfa6","GoVersion":"go1.8.7","MinAPIVersion":"1.12","Os":"linux"}},{"Name":"Universal Control Plane","Version":"17.06.2-ee-15","Details":{"ApiVersion":"1.30","Arch":"amd64","BuildTime":"Mon Jul 2 21:24:07 UTC 2018","GitCommit":"4513922","GoVersion":"go1.9.4","MinApiVersion":"1.20","Os":"linux","Version":"3.0.3-tp2"}},{"Name":"Kubernetes","Version":"1.8+","Details":{"buildDate":"2018-04-26T16:51:21Z","compiler":"gc","gitCommit":"8d637aedf46b9c21dde723e29c645b9f27106fa5","gitTreeState":"clean","gitVersion":"v1.8.11-docker-8d637ae","goVersion":"go1.8.3","major":"1","minor":"8+","platform":"linux/amd64"}},{"Name":"Calico","Version":"v3.0.8","Details":{"cni":"v2.0.6","kube-controllers":"v2.0.5","node":"v3.0.8"}}],"Version":"","ApiVersion":"","GitCommit":"","GoVersion":"","Os":"","Arch":""}}

View File

@ -45,89 +45,90 @@ func TestVersionFormat(t *testing.T) {
BuildTime: "Wed May 30 22:21:05 2018",
Context: "my-context",
},
Server: &types.Version{},
Server: &types.Version{
Platform: struct{ Name string }{Name: "Docker Enterprise Edition (EE) 2.0"},
Components: []types.ComponentVersion{
{
Name: "Engine",
Version: "17.06.2-ee-15",
Details: map[string]string{
"ApiVersion": "1.30",
"MinAPIVersion": "1.12",
"GitCommit": "64ddfa6",
"GoVersion": "go1.8.7",
"Os": "linux",
"Arch": "amd64",
"BuildTime": "Mon Jul 9 23:38:38 2018",
"Experimental": "false",
},
},
{
Name: "Universal Control Plane",
Version: "17.06.2-ee-15",
Details: map[string]string{
"Version": "3.0.3-tp2",
"ApiVersion": "1.30",
"Arch": "amd64",
"BuildTime": "Mon Jul 2 21:24:07 UTC 2018",
"GitCommit": "4513922",
"GoVersion": "go1.9.4",
"MinApiVersion": "1.20",
"Os": "linux",
},
},
{
Name: "Kubernetes",
Version: "1.8+",
Details: map[string]string{
"buildDate": "2018-04-26T16:51:21Z",
"compiler": "gc",
"gitCommit": "8d637aedf46b9c21dde723e29c645b9f27106fa5",
"gitTreeState": "clean",
"gitVersion": "v1.8.11-docker-8d637ae",
"goVersion": "go1.8.3",
"major": "1",
"minor": "8+",
"platform": "linux/amd64",
},
},
{
Name: "Calico",
Version: "v3.0.8",
Details: map[string]string{
"cni": "v2.0.6",
"kube-controllers": "v2.0.5",
"node": "v3.0.8",
},
},
},
},
}
vi.Server.Platform.Name = "Docker Enterprise Edition (EE) 2.0"
vi.Server.Components = append(vi.Server.Components, types.ComponentVersion{
Name: "Engine",
Version: "17.06.2-ee-15",
Details: map[string]string{
"ApiVersion": "1.30",
"MinAPIVersion": "1.12",
"GitCommit": "64ddfa6",
"GoVersion": "go1.8.7",
"Os": "linux",
"Arch": "amd64",
"BuildTime": "Mon Jul 9 23:38:38 2018",
"Experimental": "false",
tests := []struct {
name string
format string
}{
{
name: "default",
},
})
vi.Server.Components = append(vi.Server.Components, types.ComponentVersion{
Name: "Universal Control Plane",
Version: "17.06.2-ee-15",
Details: map[string]string{
"Version": "3.0.3-tp2",
"ApiVersion": "1.30",
"Arch": "amd64",
"BuildTime": "Mon Jul 2 21:24:07 UTC 2018",
"GitCommit": "4513922",
"GoVersion": "go1.9.4",
"MinApiVersion": "1.20",
"Os": "linux",
{
name: "json",
format: "json",
},
})
vi.Server.Components = append(vi.Server.Components, types.ComponentVersion{
Name: "Kubernetes",
Version: "1.8+",
Details: map[string]string{
"buildDate": "2018-04-26T16:51:21Z",
"compiler": "gc",
"gitCommit": "8d637aedf46b9c21dde723e29c645b9f27106fa5",
"gitTreeState": "clean",
"gitVersion": "v1.8.11-docker-8d637ae",
"goVersion": "go1.8.3",
"major": "1",
"minor": "8+",
"platform": "linux/amd64",
{
name: "json template",
format: "json",
},
})
}
for _, tc := range tests {
t.Run(tc.name, func(t *testing.T) {
tmpl, err := newVersionTemplate(tc.format)
assert.NilError(t, err)
vi.Server.Components = append(vi.Server.Components, types.ComponentVersion{
Name: "Calico",
Version: "v3.0.8",
Details: map[string]string{
"cni": "v2.0.6",
"kube-controllers": "v2.0.5",
"node": "v3.0.8",
},
})
t.Run("default", func(t *testing.T) {
cli := test.NewFakeCli(&fakeClient{})
tmpl, err := newVersionTemplate("")
assert.NilError(t, err)
assert.NilError(t, prettyPrintVersion(cli, vi, tmpl))
assert.Check(t, golden.String(cli.OutBuffer().String(), "docker-client-version.golden"))
assert.Check(t, is.Equal("", cli.ErrBuffer().String()))
})
t.Run("json", func(t *testing.T) {
cli := test.NewFakeCli(&fakeClient{})
tmpl, err := newVersionTemplate("json")
assert.NilError(t, err)
assert.NilError(t, prettyPrintVersion(cli, vi, tmpl))
assert.Check(t, golden.String(cli.OutBuffer().String(), "docker-client-version.json.golden"))
assert.Check(t, is.Equal("", cli.ErrBuffer().String()))
})
t.Run("json template", func(t *testing.T) {
cli := test.NewFakeCli(&fakeClient{})
tmpl, err := newVersionTemplate("{{json .}}")
assert.NilError(t, err)
assert.NilError(t, prettyPrintVersion(cli, vi, tmpl))
assert.Check(t, golden.String(cli.OutBuffer().String(), "docker-client-version.json.golden"))
assert.Check(t, is.Equal("", cli.ErrBuffer().String()))
})
cli := test.NewFakeCli(&fakeClient{})
assert.NilError(t, prettyPrintVersion(cli, vi, tmpl))
assert.Check(t, golden.String(cli.OutBuffer().String(), t.Name()+".golden"))
assert.Check(t, is.Equal("", cli.ErrBuffer().String()))
})
}
}