From c9d26abc4e89a880d67ffec168372707c506ab89 Mon Sep 17 00:00:00 2001 From: Peter Schultz Date: Tue, 15 Nov 2016 18:58:52 +0100 Subject: [PATCH] libmachine/provision: add test for DockerClientVersion Signed-off-by: Peter Schultz --- libmachine/provision/utils.go | 6 +++--- libmachine/provision/utils_test.go | 26 ++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/libmachine/provision/utils.go b/libmachine/provision/utils.go index 22e68bb1..5a7a6569 100644 --- a/libmachine/provision/utils.go +++ b/libmachine/provision/utils.go @@ -274,15 +274,15 @@ func WaitForDocker(p Provisioner, dockerPort int) error { } // DockerClientVersion returns the version of the Docker client on the host -// that is provisioned by p, e.g. "1.12.1". -func DockerClientVersion(p Provisioner) (string, error) { +// that ssh is connected to, e.g. "1.12.1". +func DockerClientVersion(ssh SSHCommander) (string, error) { // `docker version --format {{.Client.Version}}` would be preferrable, but // that fails if the server isn't running yet. // // output is expected to be something like // // Docker version 1.12.1, build 7a86f89 - output, err := p.SSHCommand("docker --version") + output, err := ssh.SSHCommand("docker --version") if err != nil { return "", err } diff --git a/libmachine/provision/utils_test.go b/libmachine/provision/utils_test.go index 2c8bde53..ff0cf3b2 100644 --- a/libmachine/provision/utils_test.go +++ b/libmachine/provision/utils_test.go @@ -208,3 +208,29 @@ func TestGetFilesystemType(t *testing.T) { assert.NoError(t, err) assert.Equal(t, "btrfs", fsType) } + +func TestDockerClientVersion(t *testing.T) { + cases := []struct { + output, want string + }{ + {"Docker version 1.9.1, build a34a1d5\n", "1.9.1"}, + {"Docker version 1.9.1\n", "1.9.1"}, + {"Docker version 1.13.0-rc1, build deadbeef\n", "1.13.0-rc1"}, + {"Docker version 1.13.0-dev, build deadbeef\n", "1.13.0-dev"}, + } + + sshCmder := &provisiontest.FakeSSHCommander{ + Responses: make(map[string]string), + } + + for _, tc := range cases { + sshCmder.Responses["docker --version"] = tc.output + got, err := DockerClientVersion(sshCmder) + if err != nil { + t.Fatal(err) + } + if got != tc.want { + t.Errorf("Unexpected version string from %q; got %q, want %q", tc.output, tc.want, got) + } + } +}