configurationengine/source/scripts/tests/unittest_export.py
changeset 3 e7e0ae78773e
parent 0 2e8eeb919028
child 5 d2c80f5cab53
equal deleted inserted replaced
2:87cfa131b535 3:e7e0ae78773e
    22 import sys
    22 import sys
    23 import os
    23 import os
    24 import subprocess
    24 import subprocess
    25 import zipfile
    25 import zipfile
    26 import shutil
    26 import shutil
    27 import __init__
    27 
    28 from testautomation.base_testcase import BaseTestCase
    28 from testautomation.base_testcase import BaseTestCase
    29 from testautomation.unzip_file import unzip_file
    29 from testautomation.unzip_file import unzip_file
    30 from cone.storage.filestorage import FileStorage
    30 from cone.storage.filestorage import FileStorage
    31 from cone.storage.zipstorage import ZipStorage
    31 from cone.storage.zipstorage import ZipStorage
    32 from scripttest_common import get_cmd
    32 from scripttest_common import get_cmd
    50         os.chdir(self.orig_workdir)
    50         os.chdir(self.orig_workdir)
    51 
    51 
    52     def test_get_help(self):
    52     def test_get_help(self):
    53         cmd = '%s -h' % get_cmd('export')
    53         cmd = '%s -h' % get_cmd('export')
    54         out = self.run_command(cmd)
    54         out = self.run_command(cmd)
    55         lines = out.split('\r\n')
    55         lines = out.split(os.linesep)
    56         self.assertTrue('Options:' in lines)
    56         self.assertTrue('Options:' in lines)
    57         self.assertTrue('  Export options:' in lines)
    57         self.assertTrue('  Export options:' in lines)
    58 
    58 
    59     def test_export_project(self):
    59     def test_export_project(self):
    60         remote = os.path.join(TEMP_DIR, 'test1')
    60         remote = os.path.join(TEMP_DIR, 'test1')
    61         self.remove_if_exists(remote)
    61         self.remove_if_exists(remote)
    62         
    62         
    63         self.set_modification_reference_time(TEST_PROJECT_CPF)
    63         self.set_modification_reference_time(TEST_PROJECT_CPF)
    64         cmd = '%s -p "%s" -c "root4.confml" -r "%s' % (get_cmd('export'), TEST_PROJECT_CPF, remote)
    64         cmd = '%s -p "%s" -c "root4.confml" -r "%s"' % (get_cmd('export'), TEST_PROJECT_CPF, remote)
    65         out = self.run_command(cmd)
    65         out = self.run_command(cmd)
    66         #print out
    66         #print out
    67         lines = out.split('\r\n')
    67         lines = out.split(os.linesep)
    68         self.assertTrue('Export root4.confml to %s done!' % remote in lines)
    68         self.assertTrue('Export root4.confml to %s done!' % remote in lines)
    69         
    69         
    70         self.assertEquals(set(os.listdir(remote)),
    70         self.assertEquals(set(os.listdir(remote)),
    71             set(["Layer1", "Layer2", "Layer3", "Layer4", ".metadata", "root4.confml"]))
    71             set(["Layer1", "Layer2", "Layer3", "Layer4", ".metadata", "root4.confml"]))
    72         def fp(p): # fp = full_path
    72         def fp(p): # fp = full_path
    85         
    85         
    86         self.set_modification_reference_time(TEST_PROJECT_CPF)
    86         self.set_modification_reference_time(TEST_PROJECT_CPF)
    87         cmd = '%s -p "%s" -c "root2.confml" -c "root3.confml" -c "root5.confml" -r "%s"' % (get_cmd('export'), TEST_PROJECT_CPF, remote)
    87         cmd = '%s -p "%s" -c "root2.confml" -c "root3.confml" -c "root5.confml" -r "%s"' % (get_cmd('export'), TEST_PROJECT_CPF, remote)
    88         out = self.run_command(cmd)
    88         out = self.run_command(cmd)
    89         #print out
    89         #print out
    90         lines = out.split('\r\n')
    90         lines = out.split(os.linesep)
    91         self.assertTrue('Export root2.confml to %s done!' % remote in lines)
    91         self.assertTrue('Export root2.confml to %s done!' % remote in lines)
    92         self.assertTrue('Export root3.confml to %s done!' % remote in lines)
    92         self.assertTrue('Export root3.confml to %s done!' % remote in lines)
    93         self.assertTrue('Export root5.confml to %s done!' % remote in lines)
    93         self.assertTrue('Export root5.confml to %s done!' % remote in lines)
    94         
    94         
    95         self.assertEquals(set(os.listdir(remote)),
    95         self.assertEquals(set(os.listdir(remote)),
   114         
   114         
   115         self.set_modification_reference_time(TEST_PROJECT_CPF)
   115         self.set_modification_reference_time(TEST_PROJECT_CPF)
   116         cmd = '%s -p "%s" -c "root2.confml" -c "root3.confml" -c "root5.confml" -r "%s"' % (get_cmd('export'), TEST_PROJECT_CPF, remote)
   116         cmd = '%s -p "%s" -c "root2.confml" -c "root3.confml" -c "root5.confml" -r "%s"' % (get_cmd('export'), TEST_PROJECT_CPF, remote)
   117         out = self.run_command(cmd)
   117         out = self.run_command(cmd)
   118         #print out
   118         #print out
   119         lines = out.split('\r\n')
   119         lines = out.split(os.linesep)
   120         self.assertTrue('Export root2.confml to %s done!' % remote in lines)
   120         self.assertTrue('Export root2.confml to %s done!' % remote in lines)
   121         self.assertTrue('Export root3.confml to %s done!' % remote in lines)
   121         self.assertTrue('Export root3.confml to %s done!' % remote in lines)
   122         self.assertTrue('Export root5.confml to %s done!' % remote in lines)
   122         self.assertTrue('Export root5.confml to %s done!' % remote in lines)
   123         
   123         
   124         self.assert_zip_entry_exists(remote, "root2.confml")
   124         self.assert_zip_entry_exists(remote, "root2.confml")
   273             source_storage_type = 'zip',
   273             source_storage_type = 'zip',
   274             target_project      = 'z2f/target_ef',
   274             target_project      = 'z2f/target_ef',
   275             target_storage_type = 'file',
   275             target_storage_type = 'file',
   276             empty_folders       = True)
   276             empty_folders       = True)
   277     
   277     
       
   278     def test_export_to_target_with_nonexistent_path(self):
       
   279         # Remove the target root directory to make sure that it
       
   280         # does not exist before the export
       
   281         self.remove_if_exists(os.path.join(TEMP_DIR, 'nep'))
       
   282         
       
   283         self._run_test_export_project_to_project(
       
   284             source_project      = 'f2z/source',
       
   285             source_storage_type = 'file',
       
   286             target_project      = 'nep/f2z/x/y/z/target.zip',
       
   287             target_storage_type = 'zip',
       
   288             empty_folders       = False)
       
   289     
       
   290         self._run_test_export_project_to_project(
       
   291             source_project      = 'f2z/source',
       
   292             source_storage_type = 'file',
       
   293             target_project      = 'nep/f2f/x/y/z/target',
       
   294             target_storage_type = 'file',
       
   295             empty_folders       = False)
       
   296     
   278     def _run_test_multi_export(self, export_dir, export_format, config_args,
   297     def _run_test_multi_export(self, export_dir, export_format, config_args,
   279                                expected_cpfs=None, expected_dirs=None):
   298                                expected_cpfs=None, expected_dirs=None):
   280         self.assertFalse(expected_cpfs is None and expected_dirs is None,
   299         self.assertFalse(expected_cpfs is not None and expected_dirs is not None,
   281                          "Only one of expected_cpfs or expected_dirs can be specified!")
   300                          "Only one of expected_cpfs or expected_dirs can be specified!")
   282         self.assertFalse(expected_cpfs is None and expected_dirs is None,
   301         self.assertFalse(expected_cpfs is None and expected_dirs is None,
   283                          "Either expected_cpfs or expected_dirs must be specified!")
   302                          "Either expected_cpfs or expected_dirs must be specified!")
   284         
   303         
   285         EXPORT_DIR = os.path.join(TEMP_DIR, export_dir)
   304         EXPORT_DIR = os.path.join(TEMP_DIR, export_dir)
   411             '--export-dir test/',
   430             '--export-dir test/',
   412             "error: Use of --export-dir requires at least one configuration to be specified")
   431             "error: Use of --export-dir requires at least one configuration to be specified")
   413     
   432     
   414 
   433 
   415 if __name__ == '__main__':
   434 if __name__ == '__main__':
   416       unittest.main()
   435     unittest.main()