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