浏览代码

Fix service dict merging when only one dict has a volumes key

Signed-off-by: Aanand Prasad <[email protected]>
Aanand Prasad 10 年之前
父节点
当前提交
276e43ca6b
共有 2 个文件被更改,包括 27 次插入1 次删除
  1. 4 1
      compose/config.py
  2. 23 0
      tests/unit/config_test.py

+ 4 - 1
compose/config.py

@@ -318,7 +318,10 @@ def merge_volumes(base, override):
 
 
 def dict_from_volumes(volumes):
-    return dict(split_volume(v) for v in volumes)
+    if volumes:
+        return dict(split_volume(v) for v in volumes)
+    else:
+        return {}
 
 
 def split_volume(volume):

+ 23 - 0
tests/unit/config_test.py

@@ -39,6 +39,29 @@ class ConfigTest(unittest.TestCase):
         config.make_service_dict('foo', {'ports': ['8000']})
 
 
+class MergeTest(unittest.TestCase):
+    def test_merge_volumes(self):
+        service_dict = config.merge_service_dicts({}, {})
+        self.assertNotIn('volumes', service_dict)
+
+        service_dict = config.merge_service_dicts({
+            'volumes': ['/foo:/data'],
+        }, {})
+        self.assertEqual(service_dict['volumes'], ['/foo:/data'])
+
+        service_dict = config.merge_service_dicts({}, {
+            'volumes': ['/bar:/data'],
+        })
+        self.assertEqual(service_dict['volumes'], ['/bar:/data'])
+
+        service_dict = config.merge_service_dicts({
+            'volumes': ['/foo:/data'],
+        }, {
+            'volumes': ['/bar:/data'],
+        })
+        self.assertEqual(service_dict['volumes'], ['/bar:/data'])
+
+
 class EnvTest(unittest.TestCase):
     def test_parse_environment_as_list(self):
         environment =[