mirror of https://github.com/docker/compose.git
Merge all fields inside build dict
Signed-off-by: Joffrey F <joffrey@docker.com>
This commit is contained in:
parent
d29ed0d3e4
commit
150c44dc36
|
@ -952,6 +952,8 @@ def merge_build(output, base, override):
|
|||
md.merge_scalar('context')
|
||||
md.merge_scalar('dockerfile')
|
||||
md.merge_mapping('args', parse_build_arguments)
|
||||
md.merge_field('cache_from', merge_unique_items_lists, default=[])
|
||||
md.merge_mapping('labels', parse_labels)
|
||||
return dict(md)
|
||||
|
||||
|
||||
|
|
|
@ -2847,6 +2847,74 @@ class MergeLabelsTest(unittest.TestCase):
|
|||
assert service_dict['labels'] == {'foo': '1', 'bar': ''}
|
||||
|
||||
|
||||
class MergeBuildTest(unittest.TestCase):
|
||||
def test_full(self):
|
||||
base = {
|
||||
'context': '.',
|
||||
'dockerfile': 'Dockerfile',
|
||||
'args': {
|
||||
'x': '1',
|
||||
'y': '2',
|
||||
},
|
||||
'cache_from': ['ubuntu'],
|
||||
'labels': ['com.docker.compose.test=true']
|
||||
}
|
||||
|
||||
override = {
|
||||
'context': './prod',
|
||||
'dockerfile': 'Dockerfile.prod',
|
||||
'args': ['x=12'],
|
||||
'cache_from': ['debian'],
|
||||
'labels': {
|
||||
'com.docker.compose.test': 'false',
|
||||
'com.docker.compose.prod': 'true',
|
||||
}
|
||||
}
|
||||
|
||||
result = config.merge_build(None, {'build': base}, {'build': override})
|
||||
assert result['context'] == override['context']
|
||||
assert result['dockerfile'] == override['dockerfile']
|
||||
assert result['args'] == {'x': '12', 'y': '2'}
|
||||
assert set(result['cache_from']) == set(['ubuntu', 'debian'])
|
||||
assert result['labels'] == override['labels']
|
||||
|
||||
def test_empty_override(self):
|
||||
base = {
|
||||
'context': '.',
|
||||
'dockerfile': 'Dockerfile',
|
||||
'args': {
|
||||
'x': '1',
|
||||
'y': '2',
|
||||
},
|
||||
'cache_from': ['ubuntu'],
|
||||
'labels': {
|
||||
'com.docker.compose.test': 'true'
|
||||
}
|
||||
}
|
||||
|
||||
override = {}
|
||||
|
||||
result = config.merge_build(None, {'build': base}, {'build': override})
|
||||
assert result == base
|
||||
|
||||
def test_empty_base(self):
|
||||
base = {}
|
||||
|
||||
override = {
|
||||
'context': './prod',
|
||||
'dockerfile': 'Dockerfile.prod',
|
||||
'args': {'x': '12'},
|
||||
'cache_from': ['debian'],
|
||||
'labels': {
|
||||
'com.docker.compose.test': 'false',
|
||||
'com.docker.compose.prod': 'true',
|
||||
}
|
||||
}
|
||||
|
||||
result = config.merge_build(None, {'build': base}, {'build': override})
|
||||
assert result == override
|
||||
|
||||
|
||||
class MemoryOptionsTest(unittest.TestCase):
|
||||
|
||||
def test_validation_fails_with_just_memswap_limit(self):
|
||||
|
|
Loading…
Reference in New Issue