Просмотр исходного кода

Merge pull request #4113 from shin-/4103-merge-empty-logging

Fix logging dict merging
Aanand Prasad 9 лет назад
Родитель
Сommit
0902edef43
2 измененных файлов с 46 добавлено и 1 удалено
  1. 1 1
      compose/config/config.py
  2. 45 0
      tests/unit/config/config_test.py

+ 1 - 1
compose/config/config.py

@@ -771,7 +771,7 @@ def merge_service_dicts(base, override, version):
     for field in ['dns', 'dns_search', 'env_file', 'tmpfs']:
         md.merge_field(field, merge_list_or_string)
 
-    md.merge_field('logging', merge_logging)
+    md.merge_field('logging', merge_logging, default={})
 
     for field in set(ALLOWED_KEYS) - set(md):
         md.merge_scalar(field)

+ 45 - 0
tests/unit/config/config_test.py

@@ -1657,6 +1657,51 @@ class ConfigTest(unittest.TestCase):
             }
         }
 
+    def test_merge_logging_v2_no_base(self):
+        base = {
+            'image': 'alpine:edge'
+        }
+        override = {
+            'logging': {
+                'driver': 'json-file',
+                'options': {
+                    'frequency': '2000'
+                }
+            }
+        }
+        actual = config.merge_service_dicts(base, override, V2_0)
+        assert actual == {
+            'image': 'alpine:edge',
+            'logging': {
+                'driver': 'json-file',
+                'options': {
+                    'frequency': '2000'
+                }
+            }
+        }
+
+    def test_merge_logging_v2_no_override(self):
+        base = {
+            'image': 'alpine:edge',
+            'logging': {
+                'driver': 'syslog',
+                'options': {
+                    'frequency': '2000'
+                }
+            }
+        }
+        override = {}
+        actual = config.merge_service_dicts(base, override, V2_0)
+        assert actual == {
+            'image': 'alpine:edge',
+            'logging': {
+                'driver': 'syslog',
+                'options': {
+                    'frequency': '2000'
+                }
+            }
+        }
+
     def test_external_volume_config(self):
         config_details = build_config_details({
             'version': '2',