Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[23.2] Fix missing implicit conversion for mapped over jobs #17952

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions lib/galaxy/tools/evaluation.py
Original file line number Diff line number Diff line change
Expand Up @@ -355,6 +355,7 @@ def wrap_input(input_values, input):
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
Expand Down
25 changes: 25 additions & 0 deletions lib/galaxy_test/api/test_workflows.py
Original file line number Diff line number Diff line change
Expand Up @@ -3828,6 +3828,31 @@ def test_subworkflow_map_over_data_column(self):
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:
Expand Down
18 changes: 12 additions & 6 deletions lib/galaxy_test/base/populators.py
Original file line number Diff line number Diff line change
Expand Up @@ -2857,6 +2857,8 @@ def __create_payload_fetch(self, history_id: str, collection_type, **kwds):
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]):
Expand Down Expand Up @@ -2992,22 +2994,26 @@ def read_test_data(test_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")
element_data["name"] = identifier
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
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", "")
Expand Down
Loading