package system import ( "context" "fmt" "strings" "testing" "gotest.tools/assert" is "gotest.tools/assert/cmp" "gotest.tools/golden" "github.com/docker/cli/internal/test" "github.com/docker/docker/api/types" ) func TestVersionWithoutServer(t *testing.T) { cli := test.NewFakeCli(&fakeClient{ serverVersion: func(ctx context.Context) (types.Version, error) { return types.Version{}, fmt.Errorf("no server") }, }) cmd := NewVersionCommand(cli) cmd.SetOutput(cli.Err()) assert.ErrorContains(t, cmd.Execute(), "no server") out := cli.OutBuffer().String() // TODO: use an assertion like e2e/image/build_test.go:assertBuildOutput() // instead of contains/not contains assert.Check(t, is.Contains(out, "Client:")) assert.Assert(t, !strings.Contains(out, "Server:"), "actual: %s", out) } func TestVersionAlign(t *testing.T) { vi := versionInfo{ Client: clientVersion{ 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", Experimental: true, }, } 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())) }