mirror of https://github.com/docker/compose.git
Fix merging of lists with multiple files.
Signed-off-by: Daniel Nephin <dnephin@docker.com>
This commit is contained in:
parent
c70c72f49a
commit
bf6a5d3e49
|
@ -84,10 +84,7 @@ DOCKER_CONFIG_KEYS = [
|
|||
ALLOWED_KEYS = DOCKER_CONFIG_KEYS + [
|
||||
'build',
|
||||
'container_name',
|
||||
'depends_on',
|
||||
'dockerfile',
|
||||
'expose',
|
||||
'external_links',
|
||||
'logging',
|
||||
]
|
||||
|
||||
|
@ -666,7 +663,14 @@ def merge_service_dicts(base, override, version):
|
|||
for field in ['volumes', 'devices']:
|
||||
merge_field(field, merge_path_mappings)
|
||||
|
||||
for field in ['ports', 'expose', 'external_links']:
|
||||
for field in [
|
||||
'depends_on',
|
||||
'expose',
|
||||
'external_links',
|
||||
'links',
|
||||
'ports',
|
||||
'volumes_from',
|
||||
]:
|
||||
merge_field(field, operator.add, default=[])
|
||||
|
||||
for field in ['dns', 'dns_search', 'env_file']:
|
||||
|
|
|
@ -602,6 +602,7 @@ class ConfigTest(unittest.TestCase):
|
|||
'services': {
|
||||
'web': {
|
||||
'image': 'example/web',
|
||||
'depends_on': ['db'],
|
||||
},
|
||||
'db': {
|
||||
'image': 'example/db',
|
||||
|
@ -616,7 +617,11 @@ class ConfigTest(unittest.TestCase):
|
|||
'web': {
|
||||
'build': '/',
|
||||
'volumes': ['/home/user/project:/code'],
|
||||
'depends_on': ['other'],
|
||||
},
|
||||
'other': {
|
||||
'image': 'example/other',
|
||||
}
|
||||
}
|
||||
})
|
||||
details = config.ConfigDetails('.', [base_file, override_file])
|
||||
|
@ -628,11 +633,16 @@ class ConfigTest(unittest.TestCase):
|
|||
'build': {'context': os.path.abspath('/')},
|
||||
'image': 'example/web',
|
||||
'volumes': [VolumeSpec.parse('/home/user/project:/code')],
|
||||
'depends_on': ['db', 'other'],
|
||||
},
|
||||
{
|
||||
'name': 'db',
|
||||
'image': 'example/db',
|
||||
},
|
||||
{
|
||||
'name': 'other',
|
||||
'image': 'example/other',
|
||||
},
|
||||
]
|
||||
assert service_sort(service_dicts) == service_sort(expected)
|
||||
|
||||
|
@ -2299,6 +2309,24 @@ class ExtendsTest(unittest.TestCase):
|
|||
service = load_from_filename(str(tmpdir.join('docker-compose.yml')))
|
||||
self.assertEquals(service[0]['command'], "top")
|
||||
|
||||
def test_extends_with_depends_on(self):
|
||||
tmpdir = py.test.ensuretemp('test_extends_with_defined_version')
|
||||
self.addCleanup(tmpdir.remove)
|
||||
tmpdir.join('docker-compose.yml').write("""
|
||||
version: 2
|
||||
services:
|
||||
base:
|
||||
image: example
|
||||
web:
|
||||
extends: base
|
||||
image: busybox
|
||||
depends_on: ['other']
|
||||
other:
|
||||
image: example
|
||||
""")
|
||||
services = load_from_filename(str(tmpdir.join('docker-compose.yml')))
|
||||
assert service_sort(services)[2]['depends_on'] == ['other']
|
||||
|
||||
|
||||
@pytest.mark.xfail(IS_WINDOWS_PLATFORM, reason='paths use slash')
|
||||
class ExpandPathTest(unittest.TestCase):
|
||||
|
|
Loading…
Reference in New Issue