mirror of https://github.com/docker/compose.git
Fix TypeError : unorderable types: str() < int()
While merging list items into a set, strings and ints are compared which is not possible. We cast everything to strings to avoid the issue. The issue was seen with python 3.5 while overriding configuration files with heterogenous port types (int in one file, string in another). Signed-off-by: Nicolas Barbey <nicolas.a.barbey@gmail.com>
This commit is contained in:
parent
e4bb9bde30
commit
086ae04b9e
|
@ -778,6 +778,8 @@ def merge_service_dicts(base, override, version):
|
|||
|
||||
|
||||
def merge_unique_items_lists(base, override):
|
||||
override = [str(o) for o in override]
|
||||
base = [str(b) for b in base]
|
||||
return sorted(set().union(base, override))
|
||||
|
||||
|
||||
|
|
|
@ -1378,6 +1378,44 @@ class ConfigTest(unittest.TestCase):
|
|||
'extends': {'service': 'foo'}
|
||||
}
|
||||
|
||||
def test_merge_service_dicts_heterogeneous(self):
|
||||
base = {
|
||||
'volumes': ['.:/app'],
|
||||
'ports': ['5432']
|
||||
}
|
||||
override = {
|
||||
'image': 'alpine:edge',
|
||||
'ports': [5432]
|
||||
}
|
||||
actual = config.merge_service_dicts_from_files(
|
||||
base,
|
||||
override,
|
||||
DEFAULT_VERSION)
|
||||
assert actual == {
|
||||
'image': 'alpine:edge',
|
||||
'volumes': ['.:/app'],
|
||||
'ports': ['5432']
|
||||
}
|
||||
|
||||
def test_merge_service_dicts_heterogeneous_2(self):
|
||||
base = {
|
||||
'volumes': ['.:/app'],
|
||||
'ports': [5432]
|
||||
}
|
||||
override = {
|
||||
'image': 'alpine:edge',
|
||||
'ports': ['5432']
|
||||
}
|
||||
actual = config.merge_service_dicts_from_files(
|
||||
base,
|
||||
override,
|
||||
DEFAULT_VERSION)
|
||||
assert actual == {
|
||||
'image': 'alpine:edge',
|
||||
'volumes': ['.:/app'],
|
||||
'ports': ['5432']
|
||||
}
|
||||
|
||||
def test_merge_build_args(self):
|
||||
base = {
|
||||
'build': {
|
||||
|
|
Loading…
Reference in New Issue