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  }