configurationengine/source/cone/action/tests/unittest_configroot2flat.py
changeset 4 0951727b8815
parent 3 e7e0ae78773e
--- a/configurationengine/source/cone/action/tests/unittest_configroot2flat.py	Tue Aug 10 14:29:28 2010 +0300
+++ b/configurationengine/source/cone/action/tests/unittest_configroot2flat.py	Wed Sep 08 12:20:56 2010 +0300
@@ -17,7 +17,7 @@
 ## 
 # @author Teemu Rytkonen
 
-import os
+import os, shutil
 
 import unittest
 from cone.action import configroot2flat
@@ -61,4 +61,45 @@
                                                                        'layer5/root.confml',
                                                                        'layer6/root.confml',
                                                                        'test/one/root.confml'])
-                
\ No newline at end of file
+    
+    def test_get_flat_configuration_with_nonexistent_files(self):
+        TEMP_DIR = os.path.join(ROOT_PATH,'temp2')
+        if os.path.exists(TEMP_DIR):
+            shutil.rmtree(TEMP_DIR)
+        
+        # Create a configuration with some non-existent layers
+        prj = api.Project(api.Storage.open(TEMP_DIR, 'w'))
+        prj.create_configuration('test/one/root.confml', True)
+        
+        rootconf1 = prj.create_configuration('product1_root.confml', True)
+        rootconf1.create_configuration('layer1/root.confml')
+        rootconf1.include_configuration('nonexistent1/root.confml')
+        
+        rootconf2 = prj.create_configuration('product2_root.confml', True)
+        rootconf2.create_configuration('layer3/root.confml')
+        rootconf2.include_configuration('nonexistent2/root.confml')
+        
+        fooconf = prj.create_configuration('test/foo.confml', True)
+        fooconf.include_configuration('/product1_root.confml')
+        fooconf.include_configuration('/product2_root.confml')
+        rootconf1.include_configuration('/nonexistent_product_root.confml')
+        fooconf.include_configuration('/test/one/root.confml')
+        fooconf.include_configuration('nonexistent3/root.confml')
+        prj.save()
+        prj.close()
+        
+        action = configroot2flat.ConeConfigroot2FlatAction(
+            project=TEMP_DIR,
+            configs=['test/foo.confml'])
+        action.run()
+        
+        prj = api.Project(api.Storage.open(TEMP_DIR, 'r'))
+        fooconf = prj.get_configuration('foo.confml')
+        self.assertEquals(fooconf.list_configurations(),
+            ['layer1/root.confml',
+             'nonexistent1/root.confml',
+             'layer3/root.confml',
+             'nonexistent2/root.confml',
+             'test/one/root.confml',
+             'nonexistent3/root.confml'])
+        
\ No newline at end of file