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  }