Merge pull request #4653 from shin-/4644-extends-ports

Fix ports reparsing for service extends
This commit is contained in:
Joffrey F 2017-03-23 15:15:33 -07:00 committed by GitHub
commit 6339440a3c
2 changed files with 27 additions and 1 deletions

View File

@ -266,6 +266,10 @@ class ServicePort(namedtuple('_ServicePort', 'target published protocol mode ext
@classmethod
def parse(cls, spec):
if isinstance(spec, cls):
# WHen extending a service with ports, the port definitions have already been parsed
return [spec]
if not isinstance(spec, dict):
result = []
for k, v in build_port_bindings([spec]).items():

View File

@ -3403,7 +3403,7 @@ class ExtendsTest(unittest.TestCase):
self.assertEqual(service[0]['command'], "top")
def test_extends_with_depends_on(self):
tmpdir = py.test.ensuretemp('test_extends_with_defined_version')
tmpdir = py.test.ensuretemp('test_extends_with_depends_on')
self.addCleanup(tmpdir.remove)
tmpdir.join('docker-compose.yml').write("""
version: "2"
@ -3435,6 +3435,28 @@ class ExtendsTest(unittest.TestCase):
}
}]
def test_extends_with_ports(self):
tmpdir = py.test.ensuretemp('test_extends_with_ports')
self.addCleanup(tmpdir.remove)
tmpdir.join('docker-compose.yml').write("""
version: '2'
services:
a:
image: nginx
ports:
- 80
b:
extends:
service: a
""")
services = load_from_filename(str(tmpdir.join('docker-compose.yml')))
assert len(services) == 2
for svc in services:
assert svc['ports'] == [types.ServicePort('80', None, None, None, None)]
@pytest.mark.xfail(IS_WINDOWS_PLATFORM, reason='paths use slash')
class ExpandPathTest(unittest.TestCase):