diff options
author | Joffrey F <f.joffrey@gmail.com> | 2016-10-03 11:36:02 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-10-03 11:36:02 -0700 |
commit | 89a1ffa77bcfdfba44b4713c1e296e5e3143126a (patch) | |
tree | 40585251831786e447d789b74158740049f0a381 | |
parent | 2b34e0b8e44597b36d888b3f3272641f602cb6da (diff) | |
parent | 69e992ec48cdb7f7bcb41ed0a66c1dde5fc99f14 (diff) | |
download | docker-py-89a1ffa77bcfdfba44b4713c1e296e5e3143126a.tar.gz |
Merge pull request #1217 from bfirsh/reorganisation-base-tests
Move BaseTestCase to BaseIntegrationTest
-rw-r--r-- | docker/client.py | 4 | ||||
-rw-r--r-- | tests/base.py | 12 | ||||
-rw-r--r-- | tests/helpers.py | 97 | ||||
-rw-r--r-- | tests/integration/api_test.py | 27 | ||||
-rw-r--r-- | tests/integration/base.py | 88 | ||||
-rw-r--r-- | tests/integration/build_test.py | 6 | ||||
-rw-r--r-- | tests/integration/conftest.py | 5 | ||||
-rw-r--r-- | tests/integration/container_test.py | 45 | ||||
-rw-r--r-- | tests/integration/errors_test.py | 9 | ||||
-rw-r--r-- | tests/integration/exec_test.py | 6 | ||||
-rw-r--r-- | tests/integration/image_test.py | 14 | ||||
-rw-r--r-- | tests/integration/network_test.py | 6 | ||||
-rw-r--r-- | tests/integration/regression_test.py | 6 | ||||
-rw-r--r-- | tests/integration/service_test.py | 9 | ||||
-rw-r--r-- | tests/integration/swarm_test.py | 9 | ||||
-rw-r--r-- | tests/integration/volume_test.py | 6 | ||||
-rw-r--r-- | tests/unit/container_test.py | 2 | ||||
-rw-r--r-- | tests/unit/network_test.py | 14 | ||||
-rw-r--r-- | tests/unit/volume_test.py | 20 |
19 files changed, 182 insertions, 203 deletions
diff --git a/docker/client.py b/docker/client.py index 47ad09e..23eb529 100644 --- a/docker/client.py +++ b/docker/client.py @@ -108,8 +108,10 @@ class Client( @classmethod def from_env(cls, **kwargs): + timeout = kwargs.pop('timeout', None) version = kwargs.pop('version', None) - return cls(version=version, **kwargs_from_env(**kwargs)) + return cls(timeout=timeout, version=version, + **kwargs_from_env(**kwargs)) def _retrieve_server_version(self): try: diff --git a/tests/base.py b/tests/base.py index a2c01fc..cac65fd 100644 --- a/tests/base.py +++ b/tests/base.py @@ -1,11 +1,8 @@ import sys import unittest -import pytest import six -import docker - class BaseTestCase(unittest.TestCase): def assertIn(self, object, collection): @@ -14,15 +11,6 @@ class BaseTestCase(unittest.TestCase): return super(BaseTestCase, self).assertIn(object, collection) -def requires_api_version(version): - return pytest.mark.skipif( - docker.utils.version_lt( - docker.constants.DEFAULT_DOCKER_API_VERSION, version - ), - reason="API version is too low (< {0})".format(version) - ) - - class Cleanup(object): if sys.version_info < (2, 7): # Provide a basic implementation of addCleanup for Python < 2.7 diff --git a/tests/helpers.py b/tests/helpers.py index 40baef9..529b727 100644 --- a/tests/helpers.py +++ b/tests/helpers.py @@ -1,15 +1,10 @@ import os import os.path -import shutil import tarfile import tempfile -import unittest import docker -import six - -BUSYBOX = 'busybox:buildroot-2014.02' -EXEC_DRIVER = [] +import pytest def make_tree(dirs, files): @@ -45,86 +40,10 @@ def untar_file(tardata, filename): return result -def docker_client(**kwargs): - return docker.Client(**docker_client_kwargs(**kwargs)) - - -def docker_client_kwargs(**kwargs): - client_kwargs = docker.utils.kwargs_from_env(assert_hostname=False) - client_kwargs.update(kwargs) - return client_kwargs - - -class BaseTestCase(unittest.TestCase): - tmp_imgs = [] - tmp_containers = [] - tmp_folders = [] - tmp_volumes = [] - - def setUp(self): - if six.PY2: - self.assertRegex = self.assertRegexpMatches - self.assertCountEqual = self.assertItemsEqual - self.client = docker_client(timeout=60) - self.tmp_imgs = [] - self.tmp_containers = [] - self.tmp_folders = [] - self.tmp_volumes = [] - self.tmp_networks = [] - - def tearDown(self): - for img in self.tmp_imgs: - try: - self.client.remove_image(img) - except docker.errors.APIError: - pass - for container in self.tmp_containers: - try: - self.client.stop(container, timeout=1) - self.client.remove_container(container) - except docker.errors.APIError: - pass - for network in self.tmp_networks: - try: - self.client.remove_network(network) - except docker.errors.APIError: - pass - for folder in self.tmp_folders: - shutil.rmtree(folder) - - for volume in self.tmp_volumes: - try: - self.client.remove_volume(volume) - except docker.errors.APIError: - pass - - self.client.close() - - def run_container(self, *args, **kwargs): - container = self.client.create_container(*args, **kwargs) - self.tmp_containers.append(container) - self.client.start(container) - exitcode = self.client.wait(container) - - if exitcode != 0: - output = self.client.logs(container) - raise Exception( - "Container exited with code {}:\n{}" - .format(exitcode, output)) - - return container - - def create_and_start(self, image='busybox', command='top', **kwargs): - container = self.client.create_container( - image=image, command=command, **kwargs) - self.tmp_containers.append(container) - self.client.start(container) - return container - - def execute(self, container, cmd, exit_code=0, **kwargs): - exc = self.client.exec_create(container, cmd, **kwargs) - output = self.client.exec_start(exc) - actual_exit_code = self.client.exec_inspect(exc)['ExitCode'] - msg = "Expected `{}` to exit with code {} but returned {}:\n{}".format( - " ".join(cmd), exit_code, actual_exit_code, output) - assert actual_exit_code == exit_code, msg +def requires_api_version(version): + return pytest.mark.skipif( + docker.utils.version_lt( + docker.constants.DEFAULT_DOCKER_API_VERSION, version + ), + reason="API version is too low (< {0})".format(version) + ) diff --git a/tests/integration/api_test.py b/tests/integration/api_test.py index 67ed068..f20d30b 100644 --- a/tests/integration/api_test.py +++ b/tests/integration/api_test.py @@ -6,11 +6,12 @@ import unittest import warnings import docker +from docker.utils import kwargs_from_env -from .. import helpers +from .base import BaseIntegrationTest, BUSYBOX -class InformationTest(helpers.BaseTestCase): +class InformationTest(BaseIntegrationTest): def test_version(self): res = self.client.version() self.assertIn('GoVersion', res) @@ -24,19 +25,19 @@ class InformationTest(helpers.BaseTestCase): self.assertIn('Debug', res) def test_search(self): - self.client = helpers.docker_client(timeout=10) - res = self.client.search('busybox') + client = docker.from_env(timeout=10) + res = client.search('busybox') self.assertTrue(len(res) >= 1) base_img = [x for x in res if x['name'] == 'busybox'] self.assertEqual(len(base_img), 1) self.assertIn('description', base_img[0]) -class LinkTest(helpers.BaseTestCase): +class LinkTest(BaseIntegrationTest): def test_remove_link(self): # Create containers container1 = self.client.create_container( - helpers.BUSYBOX, 'cat', detach=True, stdin_open=True + BUSYBOX, 'cat', detach=True, stdin_open=True ) container1_id = container1['Id'] self.tmp_containers.append(container1_id) @@ -48,7 +49,7 @@ class LinkTest(helpers.BaseTestCase): link_alias = 'mylink' container2 = self.client.create_container( - helpers.BUSYBOX, 'cat', host_config=self.client.create_host_config( + BUSYBOX, 'cat', host_config=self.client.create_host_config( links={link_path: link_alias} ) ) @@ -74,7 +75,7 @@ class LinkTest(helpers.BaseTestCase): self.assertEqual(len(retrieved), 2) -class LoadConfigTest(helpers.BaseTestCase): +class LoadConfigTest(BaseIntegrationTest): def test_load_legacy_config(self): folder = tempfile.mkdtemp() self.tmp_folders.append(folder) @@ -113,7 +114,7 @@ class LoadConfigTest(helpers.BaseTestCase): class AutoDetectVersionTest(unittest.TestCase): def test_client_init(self): - client = helpers.docker_client(version='auto') + client = docker.from_env(version='auto') client_version = client._version api_version = client.version(api_version=False)['ApiVersion'] self.assertEqual(client_version, api_version) @@ -122,7 +123,7 @@ class AutoDetectVersionTest(unittest.TestCase): client.close() def test_auto_client(self): - client = docker.AutoVersionClient(**helpers.docker_client_kwargs()) + client = docker.AutoVersionClient(**kwargs_from_env()) client_version = client._version api_version = client.version(api_version=False)['ApiVersion'] self.assertEqual(client_version, api_version) @@ -130,9 +131,7 @@ class AutoDetectVersionTest(unittest.TestCase): self.assertEqual(client_version, api_version_2) client.close() with self.assertRaises(docker.errors.DockerException): - docker.AutoVersionClient( - **helpers.docker_client_kwargs(version='1.11') - ) + docker.AutoVersionClient(version='1.11', **kwargs_from_env()) class ConnectionTimeoutTest(unittest.TestCase): @@ -167,7 +166,7 @@ class UnixconnTest(unittest.TestCase): with warnings.catch_warnings(record=True) as w: warnings.simplefilter('always') - client = helpers.docker_client() + client = docker.from_env() client.images() client.close() del client diff --git a/tests/integration/base.py b/tests/integration/base.py new file mode 100644 index 0000000..3fb25b5 --- /dev/null +++ b/tests/integration/base.py @@ -0,0 +1,88 @@ +import shutil +import unittest + +import docker +import six + + +BUSYBOX = 'busybox:buildroot-2014.02' + + +class BaseIntegrationTest(unittest.TestCase): + """ + A base class for integration test cases. + + It sets up a Docker client and cleans up the Docker server after itself. + """ + tmp_imgs = [] + tmp_containers = [] + tmp_folders = [] + tmp_volumes = [] + + def setUp(self): + if six.PY2: + self.assertRegex = self.assertRegexpMatches + self.assertCountEqual = self.assertItemsEqual + self.client = docker.from_env(timeout=60) + self.tmp_imgs = [] + self.tmp_containers = [] + self.tmp_folders = [] + self.tmp_volumes = [] + self.tmp_networks = [] + + def tearDown(self): + for img in self.tmp_imgs: + try: + self.client.remove_image(img) + except docker.errors.APIError: + pass + for container in self.tmp_containers: + try: + self.client.stop(container, timeout=1) + self.client.remove_container(container) + except docker.errors.APIError: + pass + for network in self.tmp_networks: + try: + self.client.remove_network(network) + except docker.errors.APIError: + pass + for folder in self.tmp_folders: + shutil.rmtree(folder) + + for volume in self.tmp_volumes: + try: + self.client.remove_volume(volume) + except docker.errors.APIError: + pass + + self.client.close() + + def run_container(self, *args, **kwargs): + container = self.client.create_container(*args, **kwargs) + self.tmp_containers.append(container) + self.client.start(container) + exitcode = self.client.wait(container) + + if exitcode != 0: + output = self.client.logs(container) + raise Exception( + "Container exited with code {}:\n{}" + .format(exitcode, output)) + + return container + + def create_and_start(self, image='busybox', command='top', **kwargs): + container = self.client.create_container( + image=image, command=command, **kwargs) + self.tmp_containers.append(container) + self.client.start(container) + return container + + def execute(self, container, cmd, exit_code=0, **kwargs): + exc = self.client.exec_create(container, cmd, **kwargs) + output = self.client.exec_start(exc) + actual_exit_code = self.client.exec_inspect(exc)['ExitCode'] + msg = "Expected `{}` to exit with code {} but returned {}:\n{}".format( + " ".join(cmd), exit_code, actual_exit_code, output) + assert actual_exit_code == exit_code, msg diff --git a/tests/integration/build_test.py b/tests/integration/build_test.py index cc8a862..8dcbd57 100644 --- a/tests/integration/build_test.py +++ b/tests/integration/build_test.py @@ -8,11 +8,11 @@ import six from docker import errors -from .. import helpers -from ..base import requires_api_version +from ..helpers import requires_api_version +from .base import BaseIntegrationTest -class BuildTest(helpers.BaseTestCase): +class BuildTest(BaseIntegrationTest): def test_build_streaming(self): script = io.BytesIO('\n'.join([ 'FROM busybox', diff --git a/tests/integration/conftest.py b/tests/integration/conftest.py index b174195..b0be966 100644 --- a/tests/integration/conftest.py +++ b/tests/integration/conftest.py @@ -7,14 +7,13 @@ import warnings import docker.errors import pytest -from ..helpers import BUSYBOX -from ..helpers import docker_client +from .base import BUSYBOX @pytest.fixture(autouse=True, scope='session') def setup_test_session(): warnings.simplefilter('error') - c = docker_client() + c = docker.from_env() try: c.inspect_image(BUSYBOX) except docker.errors.NotFound: diff --git a/tests/integration/container_test.py b/tests/integration/container_test.py index 4bb78bf..e703f18 100644 --- a/tests/integration/container_test.py +++ b/tests/integration/container_test.py @@ -8,13 +8,12 @@ from docker.utils.socket import read_exactly import pytest import six -from ..base import requires_api_version +from ..helpers import requires_api_version from .. import helpers +from .base import BaseIntegrationTest, BUSYBOX -BUSYBOX = helpers.BUSYBOX - -class ListContainersTest(helpers.BaseTestCase): +class ListContainersTest(BaseIntegrationTest): def test_list_containers(self): res0 = self.client.containers(all=True) size = len(res0) @@ -34,7 +33,7 @@ class ListContainersTest(helpers.BaseTestCase): self.assertIn('Status', retrieved) -class CreateContainerTest(helpers.BaseTestCase): +class CreateContainerTest(BaseIntegrationTest): def test_create(self): res = self.client.create_container(BUSYBOX, 'true') @@ -398,7 +397,7 @@ class CreateContainerTest(helpers.BaseTestCase): assert config['HostConfig']['Tmpfs'] == tmpfs -class VolumeBindTest(helpers.BaseTestCase): +class VolumeBindTest(BaseIntegrationTest): def setUp(self): super(VolumeBindTest, self).setUp() @@ -487,7 +486,7 @@ class VolumeBindTest(helpers.BaseTestCase): @requires_api_version('1.20') -class ArchiveTest(helpers.BaseTestCase): +class ArchiveTest(BaseIntegrationTest): def test_get_file_archive_from_container(self): data = 'The Maid and the Pocket Watch of Blood' ctnr = self.client.create_container( @@ -567,7 +566,7 @@ class ArchiveTest(helpers.BaseTestCase): self.assertIn('bar/', results) -class RenameContainerTest(helpers.BaseTestCase): +class RenameContainerTest(BaseIntegrationTest): def test_rename_container(self): version = self.client.version()['Version'] name = 'hong_meiling' @@ -583,7 +582,7 @@ class RenameContainerTest(helpers.BaseTestCase): self.assertEqual('/{0}'.format(name), inspect['Name']) -class StartContainerTest(helpers.BaseTestCase): +class StartContainerTest(BaseIntegrationTest): def test_start_container(self): res = self.client.create_container(BUSYBOX, 'true') self.assertIn('Id', res) @@ -637,7 +636,7 @@ class StartContainerTest(helpers.BaseTestCase): self.assertEqual(exitcode, 0, msg=cmd) -class WaitTest(helpers.BaseTestCase): +class WaitTest(BaseIntegrationTest): def test_wait(self): res = self.client.create_container(BUSYBOX, ['sleep', '3']) id = res['Id'] @@ -665,7 +664,7 @@ class WaitTest(helpers.BaseTestCase): self.assertEqual(inspect['State']['ExitCode'], exitcode) -class LogsTest(helpers.BaseTestCase): +class LogsTest(BaseIntegrationTest): def test_logs(self): snippet = 'Flowering Nights (Sakuya Iyazoi)' container = self.client.create_container( @@ -737,7 +736,7 @@ Line2''' self.assertEqual(logs, ''.encode(encoding='ascii')) -class DiffTest(helpers.BaseTestCase): +class DiffTest(BaseIntegrationTest): def test_diff(self): container = self.client.create_container(BUSYBOX, ['touch', '/test']) id = container['Id'] @@ -765,7 +764,7 @@ class DiffTest(helpers.BaseTestCase): self.assertEqual(test_diff[0]['Kind'], 1) -class StopTest(helpers.BaseTestCase): +class StopTest(BaseIntegrationTest): def test_stop(self): container = self.client.create_container(BUSYBOX, ['sleep', '9999']) id = container['Id'] @@ -792,7 +791,7 @@ class StopTest(helpers.BaseTestCase): self.assertEqual(state['Running'], False) -class KillTest(helpers.BaseTestCase): +class KillTest(BaseIntegrationTest): def test_kill(self): container = self.client.create_container(BUSYBOX, ['sleep', '9999']) id = container['Id'] @@ -868,7 +867,7 @@ class KillTest(helpers.BaseTestCase): self.assertEqual(state['Running'], False, state) -class PortTest(helpers.BaseTestCase): +class PortTest(BaseIntegrationTest): def test_port(self): port_bindings = { @@ -899,7 +898,7 @@ class PortTest(helpers.BaseTestCase): self.client.kill(id) -class ContainerTopTest(helpers.BaseTestCase): +class ContainerTopTest(BaseIntegrationTest): def test_top(self): container = self.client.create_container( BUSYBOX, ['sleep', '60']) @@ -934,7 +933,7 @@ class ContainerTopTest(helpers.BaseTestCase): self.client.kill(id) -class RestartContainerTest(helpers.BaseTestCase): +class RestartContainerTest(BaseIntegrationTest): def test_restart(self): container = self.client.create_container(BUSYBOX, ['sleep', '9999']) id = container['Id'] @@ -975,7 +974,7 @@ class RestartContainerTest(helpers.BaseTestCase): self.client.kill(id) -class RemoveContainerTest(helpers.BaseTestCase): +class RemoveContainerTest(BaseIntegrationTest): def test_remove(self): container = self.client.create_container(BUSYBOX, ['true']) id = container['Id'] @@ -997,7 +996,7 @@ class RemoveContainerTest(helpers.BaseTestCase): self.assertEqual(len(res), 0) -class AttachContainerTest(helpers.BaseTestCase): +class AttachContainerTest(BaseIntegrationTest): def test_run_container_streaming(self): container = self.client.create_container(BUSYBOX, '/bin/sh', detach=True, stdin_open=True) @@ -1028,7 +1027,7 @@ class AttachContainerTest(helpers.BaseTestCase): self.assertEqual(data.decode('utf-8'), line) -class PauseTest(helpers.BaseTestCase): +class PauseTest(BaseIntegrationTest): def test_pause_unpause(self): container = self.client.create_container(BUSYBOX, ['sleep', '9999']) id = container['Id'] @@ -1057,7 +1056,7 @@ class PauseTest(helpers.BaseTestCase): self.assertEqual(state['Paused'], False) -class GetContainerStatsTest(helpers.BaseTestCase): +class GetContainerStatsTest(BaseIntegrationTest): @requires_api_version('1.19') def test_get_container_stats_no_stream(self): container = self.client.create_container( @@ -1088,7 +1087,7 @@ class GetContainerStatsTest(helpers.BaseTestCase): self.assertIn(key, chunk) -class ContainerUpdateTest(helpers.BaseTestCase): +class ContainerUpdateTest(BaseIntegrationTest): @requires_api_version('1.22') def test_update_container(self): old_mem_limit = 400 * 1024 * 1024 @@ -1135,7 +1134,7 @@ class ContainerUpdateTest(helpers.BaseTestCase): ) -class ContainerCPUTest(helpers.BaseTestCase): +class ContainerCPUTest(BaseIntegrationTest): @requires_api_version('1.18') def test_container_cpu_shares(self): cpu_shares = 512 diff --git a/tests/integration/errors_test.py b/tests/integration/errors_test.py index 42fbae4..4adfa32 100644 --- a/tests/integration/errors_test.py +++ b/tests/integration/errors_test.py @@ -1,13 +1,10 @@ from docker.errors import APIError -from .. import helpers +from .base import BaseIntegrationTest, BUSYBOX -class ErrorsTest(helpers.BaseTestCase): +class ErrorsTest(BaseIntegrationTest): def test_api_error_parses_json(self): - container = self.client.create_container( - helpers.BUSYBOX, - ['sleep', '10'] - ) + container = self.client.create_container(BUSYBOX, ['sleep', '10']) self.client.start(container['Id']) with self.assertRaises(APIError) as cm: self.client.remove_container(container['Id']) diff --git a/tests/integration/exec_test.py b/tests/integration/exec_test.py index f377e09..f2a8b1f 100644 --- a/tests/integration/exec_test.py +++ b/tests/integration/exec_test.py @@ -1,12 +1,10 @@ from docker.utils.socket import next_frame_size from docker.utils.socket import read_exactly -from .. import helpers +from .base import BaseIntegrationTest, BUSYBOX -BUSYBOX = helpers.BUSYBOX - -class ExecTest(helpers.BaseTestCase): +class ExecTest(BaseIntegrationTest): def test_execute_command(self): container = self.client.create_container(BUSYBOX, 'cat', detach=True, stdin_open=True) diff --git a/tests/integration/image_test.py b/tests/integration/image_test.py index a61b58a..84ddb4f 100644 --- a/tests/integration/image_test.py +++ b/tests/integration/image_test.py @@ -14,12 +14,10 @@ from six.moves import socketserver import docker -from .. import helpers +from .base import BaseIntegrationTest, BUSYBOX -BUSYBOX = helpers.BUSYBOX - -class ListImagesTest(helpers.BaseTestCase): +class ListImagesTest(BaseIntegrationTest): def test_images(self): res1 = self.client.images(all=True) self.assertIn('Id', res1[0]) @@ -37,7 +35,7 @@ class ListImagesTest(helpers.BaseTestCase): self.assertEqual(type(res1[0]), six.text_type) -class PullImageTest(helpers.BaseTestCase): +class PullImageTest(BaseIntegrationTest): def test_pull(self): try: self.client.remove_image('hello-world') @@ -70,7 +68,7 @@ class PullImageTest(helpers.BaseTestCase): self.assertIn('Id', img_info) -class CommitTest(helpers.BaseTestCase): +class CommitTest(BaseIntegrationTest): def test_commit(self): container = self.client.create_container(BUSYBOX, ['touch', '/test']) id = container['Id'] @@ -105,7 +103,7 @@ class CommitTest(helpers.BaseTestCase): assert img['Config']['Cmd'] == ['bash'] -class RemoveImageTest(helpers.BaseTestCase): +class RemoveImageTest(BaseIntegrationTest): def test_remove(self): container = self.client.create_container(BUSYBOX, ['touch', '/test']) id = container['Id'] @@ -121,7 +119,7 @@ class RemoveImageTest(helpers.BaseTestCase): self.assertEqual(len(res), 0) -class ImportImageTest(helpers.BaseTestCase): +class ImportImageTest(BaseIntegrationTest): '''Base class for `docker import` test cases.''' TAR_SIZE = 512 * 1024 diff --git a/tests/integration/network_test.py b/tests/integration/network_test.py index bacfd81..ea5db06 100644 --- a/tests/integration/network_test.py +++ b/tests/integration/network_test.py @@ -5,11 +5,11 @@ from docker.utils import create_ipam_config from docker.utils import create_ipam_pool import pytest -from .. import helpers -from ..base import requires_api_version +from ..helpers import requires_api_version +from .base import BaseIntegrationTest -class TestNetworks(helpers.BaseTestCase): +class TestNetworks(BaseIntegrationTest): def create_network(self, *args, **kwargs): net_name = u'dockerpy{}'.format(random.getrandbits(24))[:14] net_id = self.client.create_network(net_name, *args, **kwargs)['Id'] diff --git a/tests/integration/regression_test.py b/tests/integration/regression_test.py index 8b321cf..0672c4f 100644 --- a/tests/integration/regression_test.py +++ b/tests/integration/regression_test.py @@ -4,12 +4,10 @@ import random import docker import six -from .. import helpers +from .base import BaseIntegrationTest, BUSYBOX -BUSYBOX = helpers.BUSYBOX - -class TestRegressions(helpers.BaseTestCase): +class TestRegressions(BaseIntegrationTest): def test_443_handle_nonchunked_response_in_stream(self): dfile = io.BytesIO() with self.assertRaises(docker.errors.APIError) as exc: diff --git a/tests/integration/service_test.py b/tests/integration/service_test.py index 3543894..960098a 100644 --- a/tests/integration/service_test.py +++ b/tests/integration/service_test.py @@ -2,14 +2,11 @@ import random import docker -from ..base import requires_api_version -from .. import helpers +from ..helpers import requires_api_version +from .base import BaseIntegrationTest -BUSYBOX = helpers.BUSYBOX - - -class ServiceTest(helpers.BaseTestCase): +class ServiceTest(BaseIntegrationTest): def setUp(self): super(ServiceTest, self).setUp() self.client.leave_swarm(force=True) diff --git a/tests/integration/swarm_test.py b/tests/integration/swarm_test.py index 8c62f2e..e877ef2 100644 --- a/tests/integration/swarm_test.py +++ b/tests/integration/swarm_test.py @@ -1,14 +1,11 @@ import docker import pytest -from ..base import requires_api_version -from .. import helpers +from ..helpers import requires_api_version +from .base import BaseIntegrationTest -BUSYBOX = helpers.BUSYBOX - - -class SwarmTest(helpers.BaseTestCase): +class SwarmTest(BaseIntegrationTest): def setUp(self): super(SwarmTest, self).setUp() self.client.leave_swarm(force=True) diff --git a/tests/integration/volume_test.py b/tests/integration/volume_test.py index 8fa2dab..329b4e0 100644 --- a/tests/integration/volume_test.py +++ b/tests/integration/volume_test.py @@ -1,12 +1,12 @@ import docker import pytest -from .. import helpers -from ..base import requires_api_version +from ..helpers import requires_api_version +from .base import BaseIntegrationTest @requires_api_version('1.21') -class TestVolumes(helpers.BaseTestCase): +class TestVolumes(BaseIntegrationTest): def test_create_volume(self): name = 'perfectcherryblossom' self.tmp_volumes.append(name) diff --git a/tests/unit/container_test.py b/tests/unit/container_test.py index 8871b85..779ed69 100644 --- a/tests/unit/container_test.py +++ b/tests/unit/container_test.py @@ -9,7 +9,7 @@ import pytest import six from . import fake_api -from ..base import requires_api_version +from ..helpers import requires_api_version from .api_test import ( DockerClientTest, url_prefix, fake_request, DEFAULT_TIMEOUT_SECONDS, fake_inspect_container diff --git a/tests/unit/network_test.py b/tests/unit/network_test.py index 2521688..93f03da 100644 --- a/tests/unit/network_test.py +++ b/tests/unit/network_test.py @@ -2,7 +2,7 @@ import json import six -from .. import base +from ..helpers import requires_api_version from .api_test import DockerClientTest, url_prefix, response from docker.utils import create_ipam_config, create_ipam_pool @@ -13,7 +13,7 @@ except ImportError: class NetworkTest(DockerClientTest): - @base.requires_api_version('1.21') + @requires_api_version('1.21') def test_list_networks(self): networks = [ { @@ -49,7 +49,7 @@ class NetworkTest(DockerClientTest): filters = json.loads(get.call_args[1]['params']['filters']) self.assertEqual(filters, {'id': ['123']}) - @base.requires_api_version('1.21') + @requires_api_version('1.21') def test_create_network(self): network_data = { "id": 'abc12345', @@ -104,7 +104,7 @@ class NetworkTest(DockerClientTest): } }) - @base.requires_api_version('1.21') + @requires_api_version('1.21') def test_remove_network(self): network_id = 'abc12345' delete = mock.Mock(return_value=response(status_code=200)) @@ -116,7 +116,7 @@ class NetworkTest(DockerClientTest): self.assertEqual(args[0][0], url_prefix + 'networks/{0}'.format(network_id)) - @base.requires_api_version('1.21') + @requires_api_version('1.21') def test_inspect_network(self): network_id = 'abc12345' network_name = 'foo' @@ -138,7 +138,7 @@ class NetworkTest(DockerClientTest): self.assertEqual(args[0][0], url_prefix + 'networks/{0}'.format(network_id)) - @base.requires_api_version('1.21') + @requires_api_version('1.21') def test_connect_container_to_network(self): network_id = 'abc12345' container_id = 'def45678' @@ -167,7 +167,7 @@ class NetworkTest(DockerClientTest): }, }) - @base.requires_api_version('1.21') + @requires_api_version('1.21') def test_disconnect_container_from_network(self): network_id = 'abc12345' container_id = 'def45678' diff --git a/tests/unit/volume_test.py b/tests/unit/volume_test.py index 136d11a..3909977 100644 --- a/tests/unit/volume_test.py +++ b/tests/unit/volume_test.py @@ -2,12 +2,12 @@ import json import pytest -from .. import base +from ..helpers import requires_api_version from .api_test import DockerClientTest, url_prefix, fake_request class VolumeTest(DockerClientTest): - @base.requires_api_version('1.21') + @requires_api_version('1.21') def test_list_volumes(self): volumes = self.client.volumes() self.assertIn('Volumes', volumes) @@ -17,7 +17,7 @@ class VolumeTest(DockerClientTest): self.assertEqual(args[0][0], 'GET') self.assertEqual(args[0][1], url_prefix + 'volumes') - @base.requires_api_version('1.21') + @requires_api_version('1.21') def test_list_volumes_and_filters(self): volumes = self.client.volumes(filters={'dangling': True}) assert 'Volumes' in volumes @@ -29,7 +29,7 @@ class VolumeTest(DockerClientTest): assert args[1] == {'params': {'filters': '{"dangling": ["true"]}'}, 'timeout': 60} - @base.requires_api_version('1.21') + @requires_api_version('1.21') def test_create_volume(self): name = 'perfectcherryblossom' result = self.client.create_volume(name) @@ -43,7 +43,7 @@ class VolumeTest(DockerClientTest): self.assertEqual(args[0][1], url_prefix + 'volumes/create') self.assertEqual(json.loads(args[1]['data']), {'Name': name}) - @base.requires_api_version('1.23') + @requires_api_version('1.23') def test_create_volume_with_labels(self): name = 'perfectcherryblossom' result = self.client.create_volume(name, labels={ @@ -53,13 +53,13 @@ class VolumeTest(DockerClientTest): {'com.example.some-label': 'some-value'} ) - @base.requires_api_version('1.23') + @requires_api_version('1.23') def test_create_volume_with_invalid_labels(self): name = 'perfectcherryblossom' with pytest.raises(TypeError): self.client.create_volume(name, labels=1) - @base.requires_api_version('1.21') + @requires_api_version('1.21') def test_create_volume_with_driver(self): name = 'perfectcherryblossom' driver_name = 'sshfs' @@ -72,7 +72,7 @@ class VolumeTest(DockerClientTest): self.assertIn('Driver', data) self.assertEqual(data['Driver'], driver_name) - @base.requires_api_version('1.21') + @requires_api_version('1.21') def test_create_volume_invalid_opts_type(self): with pytest.raises(TypeError): self.client.create_volume( @@ -89,7 +89,7 @@ class VolumeTest(DockerClientTest): 'perfectcherryblossom', driver_opts='' ) - @base.requires_api_version('1.21') + @requires_api_version('1.21') def test_inspect_volume(self): name = 'perfectcherryblossom' result = self.client.inspect_volume(name) @@ -102,7 +102,7 @@ class VolumeTest(DockerClientTest): self.assertEqual(args[0][0], 'GET') self.assertEqual(args[0][1], '{0}volumes/{1}'.format(url_prefix, name)) - @base.requires_api_version('1.21') + @requires_api_version('1.21') def test_remove_volume(self): name = 'perfectcherryblossom' self.client.remove_volume(name) |