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) |