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

Merge pull request #17952 from mvdbeek/fix_implicit_conversion_mapped_over

[23.2] Fix missing implicit conversion for mapped over jobs
parents e35ea08c ec6a8e72
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -355,6 +355,7 @@ class ToolEvaluator:
                element_identifier = element_identifier_mapper.identifier(dataset, param_dict)
                if element_identifier:
                    wrapper_kwds["identifier"] = element_identifier
                wrapper_kwds["formats"] = input.formats
                input_values[input.name] = DatasetFilenameWrapper(dataset, **wrapper_kwds)
            elif isinstance(input, DataCollectionToolParameter):
                dataset_collection = value
+25 −0
Original line number Diff line number Diff line
@@ -3828,6 +3828,31 @@ test_data:
                assert_ok=True,
            )

    @skip_without_tool("implicit_conversion_format_input")
    def test_run_with_implicit_collection_map_over(self):
        with self.dataset_populator.test_history() as history_id:
            self._run_workflow(
                """
class: GalaxyWorkflow
inputs:
  collection: collection
steps:
  map_over:
    tool_id: implicit_conversion_format_input
    in:
      input1: collection
test_data:
  collection:
    collection_type: list
    elements:
      - identifier: 1
        value: 1.fasta.gz
        type: File
""",
                history_id=history_id,
                assert_ok=True,
            )

    @skip_without_tool("random_lines1")
    def test_change_datatype_collection_map_over(self):
        with self.dataset_populator.test_history() as history_id:
+12 −6
Original line number Diff line number Diff line
@@ -2857,6 +2857,8 @@ class BaseDatasetCollectionPopulator:
            history_id=history_id,
            targets=targets,
        )
        if "__files" in kwds:
            payload["__files"] = kwds.pop("__files")
        return payload

    def wait_for_fetched_collection(self, fetch_response: Union[Dict[str, Any], Response]):
@@ -2992,7 +2994,8 @@ def load_data_dict(
        if is_dict and ("elements" in value or value.get("collection_type")):
            elements_data = value.get("elements", [])
            elements = []
            for element_data in elements_data:
            new_collection_kwds: Dict[str, Any] = {}
            for i, element_data in enumerate(elements_data):
                # Adapt differences between test_data dict and fetch API description.
                if "name" not in element_data:
                    identifier = element_data.pop("identifier")
@@ -3000,14 +3003,17 @@ def load_data_dict(
                input_type = element_data.pop("type", "raw")
                content = None
                if input_type == "File":
                    content = read_test_data(element_data)
                    content = open_test_data(element_data)
                    element_data["src"] = "files"
                    if "__files" not in new_collection_kwds:
                        new_collection_kwds["__files"] = {}
                    new_collection_kwds["__files"][f"file_{i}|file_data"] = content
                else:
                    content = element_data.pop("content")
                    if content is not None:
                        element_data["src"] = "pasted"
                        element_data["paste_content"] = content
                elements.append(element_data)
            new_collection_kwds = {}
            if "name" in value:
                new_collection_kwds["name"] = value["name"]
            collection_type = value.get("collection_type", "")