libmachine/provision: add test for DockerClientVersion
Signed-off-by: Peter Schultz <peter.schultz@classmarkets.com>
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user