From 276e43ca6b41917d2383199c870a2e73b7bbfa8e Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Mon, 23 Mar 2015 11:31:30 -0700 Subject: [PATCH] Fix service dict merging when only one dict has a volumes key Signed-off-by: Aanand Prasad --- compose/config.py | 5 ++++- tests/unit/config_test.py | 23 +++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/compose/config.py b/compose/config.py index 668d2b72..af30a702 100644 --- a/compose/config.py +++ b/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): diff --git a/tests/unit/config_test.py b/tests/unit/config_test.py index 013ad503..323323d4 100644 --- a/tests/unit/config_test.py +++ b/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 =[