| 
					
				 | 
			
			
				@@ -1594,30 +1594,64 @@ class BuildOrImageMergeTest(unittest.TestCase): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-class MergeListsTest(unittest.TestCase): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class MergeListsTest(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def config_name(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return "" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def base_config(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def override_config(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def merged_config(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return set(self.base_config()) | set(self.override_config()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     def test_empty(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        assert 'ports' not in config.merge_service_dicts({}, {}, DEFAULT_VERSION) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        assert self.config_name() not in config.merge_service_dicts({}, {}, DEFAULT_VERSION) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     def test_no_override(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         service_dict = config.merge_service_dicts( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            {'ports': ['10:8000', '9000']}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {self.config_name(): self.base_config()}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             {}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             DEFAULT_VERSION) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        assert set(service_dict['ports']) == set(['10:8000', '9000']) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        assert set(service_dict[self.config_name()]) == set(self.base_config()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     def test_no_base(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         service_dict = config.merge_service_dicts( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             {}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            {'ports': ['10:8000', '9000']}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {self.config_name(): self.base_config()}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             DEFAULT_VERSION) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        assert set(service_dict['ports']) == set(['10:8000', '9000']) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        assert set(service_dict[self.config_name()]) == set(self.base_config()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     def test_add_item(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         service_dict = config.merge_service_dicts( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            {'ports': ['10:8000', '9000']}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            {'ports': ['20:8000']}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {self.config_name(): self.base_config()}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {self.config_name(): self.override_config()}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             DEFAULT_VERSION) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        assert set(service_dict['ports']) == set(['10:8000', '9000', '20:8000']) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        assert set(service_dict[self.config_name()]) == set(self.merged_config()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class MergePortsTest(unittest.TestCase, MergeListsTest): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def config_name(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return 'ports' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def base_config(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return ['10:8000', '9000'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def override_config(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return ['20:8000'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class MergeNetworksTest(unittest.TestCase, MergeListsTest): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def config_name(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return 'networks' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def base_config(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return ['frontend', 'backend'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def override_config(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return ['monitoring'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 class MergeStringsOrListsTest(unittest.TestCase): 
			 |