github.1git.de/docker/cli@v26.1.3+incompatible/cli/command/system/version_test.go (about) 1 package system 2 3 import ( 4 "context" 5 "fmt" 6 "strings" 7 "testing" 8 9 "github.com/docker/cli/internal/test" 10 "github.com/docker/docker/api/types" 11 "gotest.tools/v3/assert" 12 is "gotest.tools/v3/assert/cmp" 13 "gotest.tools/v3/golden" 14 ) 15 16 func TestVersionWithoutServer(t *testing.T) { 17 cli := test.NewFakeCli(&fakeClient{ 18 serverVersion: func(ctx context.Context) (types.Version, error) { 19 return types.Version{}, fmt.Errorf("no server") 20 }, 21 }) 22 cmd := NewVersionCommand(cli) 23 cmd.SetOut(cli.Err()) 24 assert.ErrorContains(t, cmd.Execute(), "no server") 25 out := cli.OutBuffer().String() 26 // TODO: use an assertion like e2e/image/build_test.go:assertBuildOutput() 27 // instead of contains/not contains 28 assert.Check(t, is.Contains(out, "Client:")) 29 assert.Assert(t, !strings.Contains(out, "Server:"), "actual: %s", out) 30 } 31 32 func TestVersionFormat(t *testing.T) { 33 vi := versionInfo{ 34 Client: clientVersion{ 35 Version: "18.99.5-ce", 36 APIVersion: "1.38", 37 DefaultAPIVersion: "1.38", 38 GitCommit: "deadbeef", 39 GoVersion: "go1.10.2", 40 Os: "linux", 41 Arch: "amd64", 42 BuildTime: "Wed May 30 22:21:05 2018", 43 Context: "my-context", 44 }, 45 Server: &types.Version{}, 46 } 47 48 vi.Server.Platform.Name = "Docker Enterprise Edition (EE) 2.0" 49 50 vi.Server.Components = append(vi.Server.Components, types.ComponentVersion{ 51 Name: "Engine", 52 Version: "17.06.2-ee-15", 53 Details: map[string]string{ 54 "ApiVersion": "1.30", 55 "MinAPIVersion": "1.12", 56 "GitCommit": "64ddfa6", 57 "GoVersion": "go1.8.7", 58 "Os": "linux", 59 "Arch": "amd64", 60 "BuildTime": "Mon Jul 9 23:38:38 2018", 61 "Experimental": "false", 62 }, 63 }) 64 65 vi.Server.Components = append(vi.Server.Components, types.ComponentVersion{ 66 Name: "Universal Control Plane", 67 Version: "17.06.2-ee-15", 68 Details: map[string]string{ 69 "Version": "3.0.3-tp2", 70 "ApiVersion": "1.30", 71 "Arch": "amd64", 72 "BuildTime": "Mon Jul 2 21:24:07 UTC 2018", 73 "GitCommit": "4513922", 74 "GoVersion": "go1.9.4", 75 "MinApiVersion": "1.20", 76 "Os": "linux", 77 }, 78 }) 79 80 vi.Server.Components = append(vi.Server.Components, types.ComponentVersion{ 81 Name: "Kubernetes", 82 Version: "1.8+", 83 Details: map[string]string{ 84 "buildDate": "2018-04-26T16:51:21Z", 85 "compiler": "gc", 86 "gitCommit": "8d637aedf46b9c21dde723e29c645b9f27106fa5", 87 "gitTreeState": "clean", 88 "gitVersion": "v1.8.11-docker-8d637ae", 89 "goVersion": "go1.8.3", 90 "major": "1", 91 "minor": "8+", 92 "platform": "linux/amd64", 93 }, 94 }) 95 96 vi.Server.Components = append(vi.Server.Components, types.ComponentVersion{ 97 Name: "Calico", 98 Version: "v3.0.8", 99 Details: map[string]string{ 100 "cni": "v2.0.6", 101 "kube-controllers": "v2.0.5", 102 "node": "v3.0.8", 103 }, 104 }) 105 106 t.Run("default", func(t *testing.T) { 107 cli := test.NewFakeCli(&fakeClient{}) 108 tmpl, err := newVersionTemplate("") 109 assert.NilError(t, err) 110 assert.NilError(t, prettyPrintVersion(cli, vi, tmpl)) 111 assert.Check(t, golden.String(cli.OutBuffer().String(), "docker-client-version.golden")) 112 assert.Check(t, is.Equal("", cli.ErrBuffer().String())) 113 }) 114 t.Run("json", func(t *testing.T) { 115 cli := test.NewFakeCli(&fakeClient{}) 116 tmpl, err := newVersionTemplate("json") 117 assert.NilError(t, err) 118 assert.NilError(t, prettyPrintVersion(cli, vi, tmpl)) 119 assert.Check(t, golden.String(cli.OutBuffer().String(), "docker-client-version.json.golden")) 120 assert.Check(t, is.Equal("", cli.ErrBuffer().String())) 121 }) 122 t.Run("json template", func(t *testing.T) { 123 cli := test.NewFakeCli(&fakeClient{}) 124 tmpl, err := newVersionTemplate("{{json .}}") 125 assert.NilError(t, err) 126 assert.NilError(t, prettyPrintVersion(cli, vi, tmpl)) 127 assert.Check(t, golden.String(cli.OutBuffer().String(), "docker-client-version.json.golden")) 128 assert.Check(t, is.Equal("", cli.ErrBuffer().String())) 129 }) 130 }