130 def assert_zip_entry_exists(self, zip_file, path): |
130 def assert_zip_entry_exists(self, zip_file, path): |
131 zf = zipfile.ZipFile(zip_file, "r") |
131 zf = zipfile.ZipFile(zip_file, "r") |
132 try: |
132 try: |
133 if path not in zf.namelist(): |
133 if path not in zf.namelist(): |
134 self.fail("Entry '%s' not in zip file '%s'." % (path, zipfile)) |
134 self.fail("Entry '%s' not in zip file '%s'." % (path, zipfile)) |
|
135 finally: |
|
136 zf.close() |
|
137 |
|
138 def assert_zip_entry_exists_not(self, zip_file, path): |
|
139 zf = zipfile.ZipFile(zip_file, "r") |
|
140 try: |
|
141 if path in zf.namelist(): |
|
142 self.fail("Entry '%s' in zip file '%s'." % (path, zipfile)) |
135 finally: |
143 finally: |
136 zf.close() |
144 zf.close() |
137 |
145 |
138 |
146 |
139 def _run_test_export_project_to_project(self, |
147 def _run_test_export_project_to_project(self, |
395 export_format = 'cpf', |
403 export_format = 'cpf', |
396 config_args = '--config-regex root[14].confml', |
404 config_args = '--config-regex root[14].confml', |
397 expected_cpfs = [('root1.cpf', 'root1.confml'), |
405 expected_cpfs = [('root1.cpf', 'root1.confml'), |
398 ('root4.cpf', 'root4.confml')]) |
406 ('root4.cpf', 'root4.confml')]) |
399 |
407 |
400 |
408 def test_export_with_include_content_filter_help(self): |
|
409 # test help update |
|
410 cmd = '%s -h' % get_cmd('export') |
|
411 out = self.run_command(cmd) |
|
412 lines = out.split(os.linesep) |
|
413 self.assertTrue(' --include-content-filter=INCLUDE_CONTENT_FILTER' in lines) |
|
414 |
|
415 def test_export_with_include_content_filter_project_to_cpf(self): |
|
416 # test cpf export |
|
417 source = os.path.join(TEMP_DIR, "layers") |
|
418 remote = os.path.join(TEMP_DIR, 'layers.cpf') |
|
419 self.remove_if_exists(remote) |
|
420 |
|
421 unzip_file(EXPORT_TEST_PROJECT, source, delete_if_exists=True) |
|
422 |
|
423 |
|
424 cmd = '%s -p "%s" -c "root4.confml" -r "%s" --include-content-filter="%s"' % (get_cmd('export'), TEST_PROJECT_CPF, remote,".*layer1.*") |
|
425 out = self.run_command(cmd) |
|
426 |
|
427 # layer1 content |
|
428 self.assert_zip_entry_exists(remote, "root4.confml") |
|
429 self.assert_zip_entry_exists(remote, "Layer1/content/default_file.txt") |
|
430 self.assert_zip_entry_exists(remote, "Layer1/content/seq/def1_file.txt") |
|
431 |
|
432 # filtered content |
|
433 self.assert_zip_entry_exists_not(remote, "Layer2/content/layer2_file.txt") |
|
434 self.assert_zip_entry_exists_not(remote, "Layer3/content/seq/layer3_file.txt") |
|
435 self.assert_zip_entry_exists_not(remote, "Layer4/content/seq/layer4_file.txt") |
|
436 |
|
437 def test_export_with_include_content_filter_cpf_to_cpf(self): |
|
438 # test cpf export |
|
439 remote = os.path.join(TEMP_DIR, 'layers2.cpf') |
|
440 self.remove_if_exists(remote) |
|
441 |
|
442 |
|
443 |
|
444 cmd = '%s -p "%s" -c "root4.confml" -r "%s" --include-content-filter="%s"' % (get_cmd('export'), TEST_PROJECT_CPF, remote,".*layer2.*") |
|
445 out = self.run_command(cmd) |
|
446 |
|
447 # layer1 content |
|
448 self.assert_zip_entry_exists(remote, "root4.confml") |
|
449 self.assert_zip_entry_exists(remote, "Layer2/content/layer2_file.txt") |
|
450 |
|
451 # filtered content |
|
452 self.assert_zip_entry_exists_not(remote, "Layer1/content/default_file.txt") |
|
453 self.assert_zip_entry_exists_not(remote, "Layer3/content/seq/layer3_file.txt") |
|
454 self.assert_zip_entry_exists_not(remote, "Layer4/content/seq/layer4_file.txt") |
|
455 |
|
456 |
401 class TestExportInvalidArgs(BaseTestCase): |
457 class TestExportInvalidArgs(BaseTestCase): |
402 |
458 |
403 def _run_test_invalid_args(self, args, expected_msg): |
459 def _run_test_invalid_args(self, args, expected_msg): |
404 cmd = '%s -p "%s" %s' \ |
460 cmd = '%s -p "%s" %s' \ |
405 % (get_cmd('export'), TEST_PROJECT_CPF, args) |
461 % (get_cmd('export'), TEST_PROJECT_CPF, args) |