From c2d114c067d4cbc8a6a5cbe5788503e94e29f33c Mon Sep 17 00:00:00 2001 From: Joffrey F Date: Wed, 8 Mar 2017 16:10:47 -0800 Subject: [PATCH 1/2] Move LinksTest to appropriate file Signed-off-by: Joffrey F --- tests/integration/api_client_test.py | 46 ++----------------------- tests/integration/api_container_test.py | 42 ++++++++++++++++++++++ 2 files changed, 45 insertions(+), 43 deletions(-) diff --git a/tests/integration/api_client_test.py b/tests/integration/api_client_test.py index 1fef783b..d7873a85 100644 --- a/tests/integration/api_client_test.py +++ b/tests/integration/api_client_test.py @@ -8,7 +8,7 @@ import warnings import docker from docker.utils import kwargs_from_env -from .base import BaseAPIIntegrationTest, BUSYBOX +from .base import BaseAPIIntegrationTest class InformationTest(BaseAPIIntegrationTest): @@ -23,48 +23,8 @@ class InformationTest(BaseAPIIntegrationTest): self.assertIn('Containers', res) self.assertIn('Images', res) self.assertIn('Debug', res) - - -class LinkTest(BaseAPIIntegrationTest): - def test_remove_link(self): - # Create containers - container1 = self.client.create_container( - BUSYBOX, 'cat', detach=True, stdin_open=True - ) - container1_id = container1['Id'] - self.tmp_containers.append(container1_id) - self.client.start(container1_id) - - # Create Link - # we don't want the first / - link_path = self.client.inspect_container(container1_id)['Name'][1:] - link_alias = 'mylink' - - container2 = self.client.create_container( - BUSYBOX, 'cat', host_config=self.client.create_host_config( - links={link_path: link_alias} - ) - ) - container2_id = container2['Id'] - self.tmp_containers.append(container2_id) - self.client.start(container2_id) - - # Remove link - linked_name = self.client.inspect_container(container2_id)['Name'][1:] - link_name = '%s/%s' % (linked_name, link_alias) - self.client.remove_container(link_name, link=True) - - # Link is gone - containers = self.client.containers(all=True) - retrieved = [x for x in containers if link_name in x['Names']] - self.assertEqual(len(retrieved), 0) - - # Containers are still there - retrieved = [ - x for x in containers if x['Id'].startswith(container1_id) or - x['Id'].startswith(container2_id) - ] - self.assertEqual(len(retrieved), 2) + print(res) + self.fail() class LoadConfigTest(BaseAPIIntegrationTest): diff --git a/tests/integration/api_container_test.py b/tests/integration/api_container_test.py index f539697e..95142615 100644 --- a/tests/integration/api_container_test.py +++ b/tests/integration/api_container_test.py @@ -1253,3 +1253,45 @@ class ContainerCPUTest(BaseAPIIntegrationTest): self.client.start(container) inspect_data = self.client.inspect_container(container) self.assertEqual(inspect_data['HostConfig']['CpusetCpus'], cpuset_cpus) + + +class LinkTest(BaseAPIIntegrationTest): + def test_remove_link(self): + # Create containers + container1 = self.client.create_container( + BUSYBOX, 'cat', detach=True, stdin_open=True + ) + container1_id = container1['Id'] + self.tmp_containers.append(container1_id) + self.client.start(container1_id) + + # Create Link + # we don't want the first / + link_path = self.client.inspect_container(container1_id)['Name'][1:] + link_alias = 'mylink' + + container2 = self.client.create_container( + BUSYBOX, 'cat', host_config=self.client.create_host_config( + links={link_path: link_alias} + ) + ) + container2_id = container2['Id'] + self.tmp_containers.append(container2_id) + self.client.start(container2_id) + + # Remove link + linked_name = self.client.inspect_container(container2_id)['Name'][1:] + link_name = '%s/%s' % (linked_name, link_alias) + self.client.remove_container(link_name, link=True) + + # Link is gone + containers = self.client.containers(all=True) + retrieved = [x for x in containers if link_name in x['Names']] + self.assertEqual(len(retrieved), 0) + + # Containers are still there + retrieved = [ + x for x in containers if x['Id'].startswith(container1_id) or + x['Id'].startswith(container2_id) + ] + self.assertEqual(len(retrieved), 2) From 54b3c364cbe8091768d342db5d167e174b6a416f Mon Sep 17 00:00:00 2001 From: Joffrey F Date: Wed, 8 Mar 2017 16:13:56 -0800 Subject: [PATCH 2/2] Raise an error when passing an empty string to split_port Signed-off-by: Joffrey F --- docker/utils/ports.py | 2 ++ tests/integration/api_client_test.py | 2 -- tests/unit/utils_test.py | 3 +++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/docker/utils/ports.py b/docker/utils/ports.py index e2aeb8cc..3708958d 100644 --- a/docker/utils/ports.py +++ b/docker/utils/ports.py @@ -67,6 +67,8 @@ def split_port(port): if len(parts) == 1: internal_port, = parts + if not internal_port: + _raise_invalid_port(port) return to_port_range(internal_port), None if len(parts) == 2: external_port, internal_port = parts diff --git a/tests/integration/api_client_test.py b/tests/integration/api_client_test.py index d7873a85..cc641582 100644 --- a/tests/integration/api_client_test.py +++ b/tests/integration/api_client_test.py @@ -23,8 +23,6 @@ class InformationTest(BaseAPIIntegrationTest): self.assertIn('Containers', res) self.assertIn('Images', res) self.assertIn('Debug', res) - print(res) - self.fail() class LoadConfigTest(BaseAPIIntegrationTest): diff --git a/tests/unit/utils_test.py b/tests/unit/utils_test.py index ed84b3a1..4c3c3664 100644 --- a/tests/unit/utils_test.py +++ b/tests/unit/utils_test.py @@ -578,6 +578,9 @@ class PortsTest(unittest.TestCase): self.assertRaises(ValueError, lambda: split_port("localhost:80:")) + def test_split_port_empty_string(self): + self.assertRaises(ValueError, lambda: split_port("")) + def test_build_port_bindings_with_one_port(self): port_bindings = build_port_bindings(["127.0.0.1:1000:1000"]) self.assertEqual(port_bindings["1000"], [("127.0.0.1", "1000")])