mirror of https://github.com/docker/docker-py.git
Add helpful error for APIClient methods on Client
Signed-off-by: Ben Firshman <ben@firshman.co.uk>
This commit is contained in:
parent
c7a3aa7e44
commit
b5f7d380d0
|
|
@ -154,4 +154,14 @@ class Client(object):
|
|||
return self.api.version(*args, **kwargs)
|
||||
version.__doc__ = APIClient.version.__doc__
|
||||
|
||||
def __getattr__(self, name):
|
||||
s = ["'Client' object has no attribute '{}'".format(name)]
|
||||
# If a user calls a method on APIClient, they
|
||||
if hasattr(APIClient, name):
|
||||
s.append("In docker-py 2.0, this method is now on the object "
|
||||
"APIClient. See the low-level API section of the "
|
||||
"documentation for more details.".format(name))
|
||||
raise AttributeError(' '.join(s))
|
||||
|
||||
|
||||
from_env = Client.from_env
|
||||
|
|
|
|||
|
|
@ -45,6 +45,20 @@ class ClientTest(unittest.TestCase):
|
|||
assert client.version() == mock_func.return_value
|
||||
mock_func.assert_called_with()
|
||||
|
||||
def test_call_api_client_method(self):
|
||||
client = docker.from_env()
|
||||
with self.assertRaises(AttributeError) as cm:
|
||||
client.create_container()
|
||||
s = str(cm.exception)
|
||||
assert "'Client' object has no attribute 'create_container'" in s
|
||||
assert "this method is now on the object APIClient" in s
|
||||
|
||||
with self.assertRaises(AttributeError) as cm:
|
||||
client.abcdef()
|
||||
s = str(cm.exception)
|
||||
assert "'Client' object has no attribute 'abcdef'" in s
|
||||
assert "this method is now on the object APIClient" not in s
|
||||
|
||||
|
||||
class FromEnvTest(unittest.TestCase):
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue