Ver código fonte

Fix timeout value in error message

Signed-off-by: Aanand Prasad <[email protected]>
Aanand Prasad 9 anos atrás
pai
commit
4207d43b85
2 arquivos alterados com 22 adições e 8 exclusões
  1. 3 4
      compose/cli/errors.py
  2. 19 4
      tests/unit/cli/docker_client_test.py

+ 3 - 4
compose/cli/errors.py

@@ -13,7 +13,6 @@ from requests.exceptions import SSLError
 from requests.packages.urllib3.exceptions import ReadTimeoutError
 
 from ..const import API_VERSION_TO_ENGINE_VERSION
-from ..const import HTTP_TIMEOUT
 from .utils import call_silently
 from .utils import is_docker_for_mac_installed
 from .utils import is_mac
@@ -47,7 +46,7 @@ def handle_connection_errors(client):
         raise ConnectionError()
     except RequestsConnectionError as e:
         if e.args and isinstance(e.args[0], ReadTimeoutError):
-            log_timeout_error()
+            log_timeout_error(client.timeout)
             raise ConnectionError()
         exit_with_error(get_conn_error_message(client.base_url))
     except APIError as e:
@@ -58,13 +57,13 @@ def handle_connection_errors(client):
         raise ConnectionError()
 
 
-def log_timeout_error():
+def log_timeout_error(timeout):
     log.error(
         "An HTTP request took too long to complete. Retry with --verbose to "
         "obtain debug information.\n"
         "If you encounter this issue regularly because of slow network "
         "conditions, consider setting COMPOSE_HTTP_TIMEOUT to a higher "
-        "value (current value: %s)." % HTTP_TIMEOUT)
+        "value (current value: %s)." % timeout)
 
 
 def log_api_error(e, client_version):

+ 19 - 4
tests/unit/cli/docker_client_test.py

@@ -6,6 +6,7 @@ import os
 import docker
 import pytest
 
+from compose.cli import errors
 from compose.cli.docker_client import docker_client
 from compose.cli.docker_client import tls_config_from_options
 from tests import mock
@@ -19,11 +20,25 @@ class DockerClientTestCase(unittest.TestCase):
             del os.environ['HOME']
             docker_client(os.environ)
 
+    @mock.patch.dict(os.environ)
     def test_docker_client_with_custom_timeout(self):
-        timeout = 300
-        with mock.patch('compose.cli.docker_client.HTTP_TIMEOUT', 300):
-            client = docker_client(os.environ)
-            self.assertEqual(client.timeout, int(timeout))
+        os.environ['COMPOSE_HTTP_TIMEOUT'] = '123'
+        client = docker_client(os.environ)
+        assert client.timeout == 123
+
+    @mock.patch.dict(os.environ)
+    def test_custom_timeout_error(self):
+        os.environ['COMPOSE_HTTP_TIMEOUT'] = '123'
+        client = docker_client(os.environ)
+
+        with mock.patch('compose.cli.errors.log') as fake_log:
+            with pytest.raises(errors.ConnectionError):
+                with errors.handle_connection_errors(client):
+                    raise errors.RequestsConnectionError(
+                        errors.ReadTimeoutError(None, None, None))
+
+        assert fake_log.error.call_count == 1
+        assert '123' in fake_log.error.call_args[0][0]
 
 
 class TLSConfigTestCase(unittest.TestCase):