mirror of
https://github.com/docker/compose.git
synced 2025-07-23 21:54:40 +02:00
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 + [
|
ALLOWED_KEYS = DOCKER_CONFIG_KEYS + [
|
||||||
'build',
|
'build',
|
||||||
'container_name',
|
'container_name',
|
||||||
'depends_on',
|
|
||||||
'dockerfile',
|
'dockerfile',
|
||||||
'expose',
|
|
||||||
'external_links',
|
|
||||||
'logging',
|
'logging',
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -666,7 +663,14 @@ def merge_service_dicts(base, override, version):
|
|||||||
for field in ['volumes', 'devices']:
|
for field in ['volumes', 'devices']:
|
||||||
merge_field(field, merge_path_mappings)
|
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=[])
|
merge_field(field, operator.add, default=[])
|
||||||
|
|
||||||
for field in ['dns', 'dns_search', 'env_file']:
|
for field in ['dns', 'dns_search', 'env_file']:
|
||||||
|
@ -602,6 +602,7 @@ class ConfigTest(unittest.TestCase):
|
|||||||
'services': {
|
'services': {
|
||||||
'web': {
|
'web': {
|
||||||
'image': 'example/web',
|
'image': 'example/web',
|
||||||
|
'depends_on': ['db'],
|
||||||
},
|
},
|
||||||
'db': {
|
'db': {
|
||||||
'image': 'example/db',
|
'image': 'example/db',
|
||||||
@ -616,7 +617,11 @@ class ConfigTest(unittest.TestCase):
|
|||||||
'web': {
|
'web': {
|
||||||
'build': '/',
|
'build': '/',
|
||||||
'volumes': ['/home/user/project:/code'],
|
'volumes': ['/home/user/project:/code'],
|
||||||
|
'depends_on': ['other'],
|
||||||
},
|
},
|
||||||
|
'other': {
|
||||||
|
'image': 'example/other',
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
details = config.ConfigDetails('.', [base_file, override_file])
|
details = config.ConfigDetails('.', [base_file, override_file])
|
||||||
@ -628,11 +633,16 @@ class ConfigTest(unittest.TestCase):
|
|||||||
'build': {'context': os.path.abspath('/')},
|
'build': {'context': os.path.abspath('/')},
|
||||||
'image': 'example/web',
|
'image': 'example/web',
|
||||||
'volumes': [VolumeSpec.parse('/home/user/project:/code')],
|
'volumes': [VolumeSpec.parse('/home/user/project:/code')],
|
||||||
|
'depends_on': ['db', 'other'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'name': 'db',
|
'name': 'db',
|
||||||
'image': 'example/db',
|
'image': 'example/db',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
'name': 'other',
|
||||||
|
'image': 'example/other',
|
||||||
|
},
|
||||||
]
|
]
|
||||||
assert service_sort(service_dicts) == service_sort(expected)
|
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')))
|
service = load_from_filename(str(tmpdir.join('docker-compose.yml')))
|
||||||
self.assertEquals(service[0]['command'], "top")
|
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')
|
@pytest.mark.xfail(IS_WINDOWS_PLATFORM, reason='paths use slash')
|
||||||
class ExpandPathTest(unittest.TestCase):
|
class ExpandPathTest(unittest.TestCase):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user