summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--compose/cli/errors.py6
-rw-r--r--compose/cli/main.py6
-rw-r--r--tests/unit/cli/errors_test.py6
3 files changed, 9 insertions, 9 deletions
diff --git a/compose/cli/errors.py b/compose/cli/errors.py
index 4fdec08a..5b977095 100644
--- a/compose/cli/errors.py
+++ b/compose/cli/errors.py
@@ -4,6 +4,7 @@ from __future__ import unicode_literals
import contextlib
import logging
import socket
+from distutils.spawn import find_executable
from textwrap import dedent
from docker.errors import APIError
@@ -13,7 +14,6 @@ from requests.exceptions import SSLError
from requests.packages.urllib3.exceptions import ReadTimeoutError
from ..const import API_VERSION_TO_ENGINE_VERSION
-from .utils import call_silently
from .utils import is_docker_for_mac_installed
from .utils import is_mac
from .utils import is_ubuntu
@@ -90,11 +90,11 @@ def exit_with_error(msg):
def get_conn_error_message(url):
- if call_silently(['which', 'docker']) != 0:
+ if find_executable('docker') is None:
return docker_not_found_msg("Couldn't connect to Docker daemon.")
if is_docker_for_mac_installed():
return conn_error_docker_for_mac
- if call_silently(['which', 'docker-machine']) == 0:
+ if find_executable('docker-machine') is not None:
return conn_error_docker_machine
return conn_error_generic.format(url=url)
diff --git a/compose/cli/main.py b/compose/cli/main.py
index 58b95c2f..08e58e37 100644
--- a/compose/cli/main.py
+++ b/compose/cli/main.py
@@ -10,6 +10,7 @@ import pipes
import re
import subprocess
import sys
+from distutils.spawn import find_executable
from inspect import getdoc
from operator import attrgetter
@@ -1063,9 +1064,8 @@ def exit_if(condition, message, exit_code):
def call_docker(args):
- try:
- executable_path = subprocess.check_output(["which", "docker"]).strip()
- except subprocess.CalledProcessError:
+ executable_path = find_executable('docker')
+ if not executable_path:
raise UserError(errors.docker_not_found_msg("Couldn't find `docker` binary."))
args = [executable_path] + args
diff --git a/tests/unit/cli/errors_test.py b/tests/unit/cli/errors_test.py
index 1d454a08..a7b57562 100644
--- a/tests/unit/cli/errors_test.py
+++ b/tests/unit/cli/errors_test.py
@@ -16,9 +16,9 @@ def mock_logging():
yield mock_log
-def patch_call_silently(side_effect):
+def patch_find_executable(side_effect):
return mock.patch(
- 'compose.cli.errors.call_silently',
+ 'compose.cli.errors.find_executable',
autospec=True,
side_effect=side_effect)
@@ -27,7 +27,7 @@ class TestHandleConnectionErrors(object):
def test_generic_connection_error(self, mock_logging):
with pytest.raises(errors.ConnectionError):
- with patch_call_silently([0, 1]):
+ with patch_find_executable(['/bin/docker', None]):
with handle_connection_errors(mock.Mock()):
raise ConnectionError()