configurationengine/source/scripts/tests/unittest_initvariant.py
changeset 5 d2c80f5cab53
parent 3 e7e0ae78773e
--- a/configurationengine/source/scripts/tests/unittest_initvariant.py	Wed Sep 08 12:20:56 2010 +0300
+++ b/configurationengine/source/scripts/tests/unittest_initvariant.py	Thu Oct 21 16:36:53 2010 +0300
@@ -34,7 +34,7 @@
 
 class TestInitVariant(BaseTestCase):
     
-    def _prepare_workdir(self, subdir, expected_zip):
+    def _prepare_workdir(self, subdir, project_zip, expected_zip):
         WORKDIR = os.path.join(TEMP_DIR, subdir)
         PROJECT_DIR = os.path.join(WORKDIR, 'project')
         EXPECTED_DIR = os.path.join(WORKDIR, 'expected')
@@ -42,7 +42,7 @@
         self.remove_if_exists(WORKDIR)
         
         unzip_file.unzip_file(
-            os.path.join(TESTDATA_DIR, 'test_project.zip'),
+            os.path.join(TESTDATA_DIR, project_zip),
             PROJECT_DIR)
         unzip_file.unzip_file(
            os.path.join(TESTDATA_DIR, expected_zip),
@@ -57,8 +57,8 @@
         p.close()
         return active_root
     
-    def test_initvariant(self):
-        PROJECT_DIR, EXPECTED_DIR = self._prepare_workdir('var1', 'expected.zip')
+    def test_initvariant_set_active_root(self):
+        PROJECT_DIR, EXPECTED_DIR = self._prepare_workdir('var1', 'test_project.zip', 'expected.zip')
         
         self.assertEquals(self._get_active_configuration(PROJECT_DIR), None)
         
@@ -70,8 +70,8 @@
                           'testprod_custvariant_123_foo_root.confml')
     
     
-    def test_initvariant_2(self):
-        PROJECT_DIR, EXPECTED_DIR = self._prepare_workdir('var2', 'expected2.zip')
+    def test_initvariant_do_not_set_active_root(self):
+        PROJECT_DIR, EXPECTED_DIR = self._prepare_workdir('var2', 'test_project.zip', 'expected2.zip')
         
         self.assertEquals(self._get_active_configuration(PROJECT_DIR), None)
         
@@ -83,17 +83,54 @@
 
 
     def test_initvariant_based_on_configuration(self):
-        PROJECT_DIR, EXPECTED_DIR = self._prepare_workdir('var3', 'expected3.zip')
+        PROJECT_DIR, EXPECTED_DIR = self._prepare_workdir('var3', 'test_project.zip', 'expected3.zip')
         
         self.assertEquals(self._get_active_configuration(PROJECT_DIR), None)
         
         cmd = '%s -p "%s" -c foovariant.confml --variant-id=123 -b testprod_custvariant_root.confml' % (get_cmd('initvariant'), PROJECT_DIR)
-
+        self.run_command(cmd)
+        
+        self.assert_dir_contents_equal(PROJECT_DIR, EXPECTED_DIR, ['.svn', '.metadata'])
+        self.assertEquals(self._get_active_configuration(PROJECT_DIR), None)
+    
+    def test_initvariant_based_on_configuration_on_dcp_structure(self):
+        # variant dir is project/product/customer/variant instead of project/coreplat/product/customer/variant
+        PROJECT_DIR, EXPECTED_DIR = self._prepare_workdir('var4', 'project4.zip', 'expected4.zip')
+        
+        cmd = '%s -p "%s" -c foovariant.confml --variant-id=123 -b testprod_custvariant_root.confml' % (get_cmd('initvariant'), PROJECT_DIR)
+        self.run_command(cmd)
+        
+        self.assert_dir_contents_equal(PROJECT_DIR, EXPECTED_DIR, ['.svn', '.metadata'])
+        self.assertEquals(self._get_active_configuration(PROJECT_DIR), None)
+    
+    # test that when root config in cpf has multiple ctr codes defined and a matching updated
+    # root config with all the same ctr codes is found, the target root config is created
+    # accordingly
+    def test_initvariant_with_updated_root_in_target_project(self):
+        PROJECT_DIR, EXPECTED_DIR = self._prepare_workdir('var5', 'test_project2.zip', 'expected5.zip')
+        TEST_CPF = os.path.join(TESTDATA_DIR, 'test_project.cpf')
+        ROOT_CONFIG = 'testprod_custvariant_03_root.confml'
+        FIND_LAYER_REGEXP = r'.*custvar[^/].*|.*/configurator/.*|.*/manual/.*'
+        
+        cmd = '%s -p "%s" -s %s -c foovariant.confml --variant-id=123 -r %s --find-layer-regexp=\"%s\"' % (get_cmd('initvariant'), PROJECT_DIR, ROOT_CONFIG, TEST_CPF, FIND_LAYER_REGEXP)
+        self.run_command(cmd)
+        
+        self.assert_dir_contents_equal(PROJECT_DIR, EXPECTED_DIR, ['.svn', '.metadata'])
+        self.assertEquals(self._get_active_configuration(PROJECT_DIR), None)
+        
+    # test that when root config in cpf has ONE ctr code defined, a matching updated root config is
+    # found from target project and the target root config is created accordingly
+    def test_initvariant_with_one_matching_ctr_code(self):
+        PROJECT_DIR, EXPECTED_DIR = self._prepare_workdir('var6', 'test_project2.zip', 'expected6.zip')
+        TEST_CPF = os.path.join(TESTDATA_DIR, 'test_project.cpf')
+        ROOT_CONFIG = 'testprod_custvariant_04_root.confml'
+        FIND_LAYER_REGEXP = r'.*custvar[^/].*|.*/configurator/.*|.*/manual/.*'
+        
+        cmd = '%s -p "%s" -s %s -c foovariant.confml --variant-id=123 -r %s --find-layer-regexp=\"%s\"' % (get_cmd('initvariant'), PROJECT_DIR, ROOT_CONFIG, TEST_CPF, FIND_LAYER_REGEXP)
         self.run_command(cmd)
         
         self.assert_dir_contents_equal(PROJECT_DIR, EXPECTED_DIR, ['.svn', '.metadata'])
         self.assertEquals(self._get_active_configuration(PROJECT_DIR), None)
 
-
 if __name__ == '__main__':
     unittest.main()