Unverified Commit e5ab06ff authored by Marius van den Beek's avatar Marius van den Beek Committed by GitHub
Browse files

Merge pull request #20929 from bernt-matthias/extract-common-prefix-dir

Extract: do not use common prefix dir
parents 3e349928 8a31f0ad
Loading
Loading
Loading
Loading
+39 −2
Original line number Diff line number Diff line
<tool id="CONVERTER_archive_to_directory" name="Unpack archive to directory" version="1.0.0" profile="21.09">
    <!-- Use compression_utils instead of shell commands (tar/unzip) so we can verify safety of results -->
    <requirements>
        <requirement type="package" version="25.0">galaxy-util</requirement>
        <requirement type="package" version="25.1">galaxy-util</requirement>
    </requirements>
    <command><![CDATA[
        mkdir '$output1.files_path' &&
@@ -31,7 +31,44 @@
        <test>
            <param name="input1" ftype="tar" value="testdir1.tar"/>
            <param name="__target_datatype__" value="directory"/>
            <output name="output1" ftype="directory" value="testdir1.tar.directory"/>
            <output name="output1" ftype="directory" value="testdir1.tar.directory">
                <extra_files name="testdir1/file1">
                    <assert_contents>
                        <has_text text="hello"/>
                    </assert_contents>
                </extra_files>
                <extra_files name="testdir1/file2">
                    <assert_contents>
                        <has_text text="world"/>
                    </assert_contents>
                </extra_files>
                <extra_files name="testdir1/dir1/file3">
                    <assert_contents>
                        <has_text text="subdirfile"/>
                    </assert_contents>
                </extra_files>
            </output>
        </test>
        <test>
            <param name="input1" ftype="tar" value="testdir1_flat.zip"/>
            <param name="__target_datatype__" value="directory"/>
            <output name="output1" ftype="directory" value="testdir1.tar.directory">
                <extra_files name="file1">
                    <assert_contents>
                        <has_text text="hello"/>
                    </assert_contents>
                </extra_files>
                <extra_files name="file2">
                    <assert_contents>
                        <has_text text="world"/>
                    </assert_contents>
                </extra_files>
                <extra_files name="dir1/file3">
                    <assert_contents>
                        <has_text text="subdirfile"/>
                    </assert_contents>
                </extra_files>
            </output>
        </test>
    </tests>
    <help>
+0 −4
Original line number Diff line number Diff line
@@ -253,10 +253,6 @@ class CompressedFile:
                    members_z = cast(Iterable[str], self.safemembers())
                    self.archive.extractall(extraction_path, members=members_z)
        else:
            if not common_prefix_dir:
                extraction_path = os.path.join(path, self.file_name)
                if not os.path.exists(extraction_path):
                    os.makedirs(extraction_path)
            if isinstance(self.archive, tarfile.TarFile):
                members_t = cast(Iterable[tarfile.TarInfo], self.safemembers())
                self.archive.extractall(extraction_path, members=members_t)
+2 −2
Original line number Diff line number Diff line
@@ -740,12 +740,12 @@ def test_export_invocation_to_ro_crate_archive(tmp_path):
    workflow_invocation = _setup_invocation(app)

    crate_zip = tmp_path / "crate.zip"
    crate_directory = tmp_path / "crate"
    with store.ROCrateArchiveModelExportStore(crate_zip, app=app, export_files="symlink") as export_store:
        export_store.export_workflow_invocation(workflow_invocation)
    with CompressedFile(crate_zip) as compressed_file:
        assert compressed_file.file_type == "zip"
        compressed_file.extract(tmp_path)
    crate_directory = tmp_path / "crate"
        compressed_file.extract(crate_directory)
    validate_invocation_crate_directory(crate_directory)