diff --git a/src/assemble_workflow/dist.py b/src/assemble_workflow/dist.py index 1bb64b02a3..74df6fc15b 100644 --- a/src/assemble_workflow/dist.py +++ b/src/assemble_workflow/dist.py @@ -103,11 +103,17 @@ def __extract__(self, dest: str) -> None: def __build__(self, name: str, dest: str) -> None: with ZipFile(name, "w", zipfile.ZIP_DEFLATED) as zip: - rootlen = len(self.archive_path) + 1 + # root : /tmp/tmp********/opensearch- + # leadingdir : opensearch- + # root no leading dir: /tmp/tmp********/ + # This is to preserve the leading directory `opensearch-` in zip + rootlen = len(self.archive_path) + leadingdirlen = len(os.path.basename(self.archive_path)) + noleadingdirlen = rootlen - leadingdirlen for base, _, files in os.walk(self.archive_path): for file in files: fn = os.path.join(base, file) - zip.write(fn, fn[rootlen:]) + zip.write(fn, fn[noleadingdirlen:]) class DistRpm(Dist): diff --git a/tests/tests_assemble_workflow/test_bundle_opensearch.py b/tests/tests_assemble_workflow/test_bundle_opensearch.py index 97833d95a2..8da61b80df 100644 --- a/tests/tests_assemble_workflow/test_bundle_opensearch.py +++ b/tests/tests_assemble_workflow/test_bundle_opensearch.py @@ -251,5 +251,5 @@ def test_bundle_package_zip(self) -> None: with patch("shutil.copyfile") as mock_copyfile: bundle.package(os.path.dirname(__file__)) mock_zipfile_open.assert_called_with("opensearch.zip", "w", zipfile.ZIP_DEFLATED) - mock_zipfile_write.assert_called_with(os.path.join(bundle.tmp_dir.name, "opensearch-1.3.0", "opensearch.txt"), "opensearch.txt") + mock_zipfile_write.assert_called_with(os.path.join(bundle.tmp_dir.name, "opensearch-1.3.0", "opensearch.txt"), os.path.join("opensearch-1.3.0", "opensearch.txt")) self.assertEqual(mock_copyfile.call_count, 1)