libmachine/provision: add test for DockerClientVersion

Signed-off-by: Peter Schultz <peter.schultz@classmarkets.com>
This commit is contained in:
Peter Schultz
2016-11-15 18:58:52 +01:00
parent a0378e4ce3
commit c9d26abc4e
2 changed files with 29 additions and 3 deletions

View File

@@ -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
}

View File

@@ -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)
}
}
}