Merge pull request #14494 from mvdbeek/fix_refactor_action

[22.05] Fix refactor action dropping outputs on subworkflow connection
This commit is contained in:
Dannon
2022-08-24 07:07:06 -04:00
committed by GitHub
4 changed files with 11 additions and 14 deletions
+6 -9
View File
@@ -540,7 +540,12 @@ class SubWorkflowModule(WorkflowModule):
data_output["name"] == workflow_output["output_name"]
or data_output_uuid == workflow_output_uuid
):
data_output["label"] = label
change_datatype_action = step["post_job_actions"].get(
f"ChangeDatatypeAction{data_output['name']}"
)
if change_datatype_action:
self.post_job_actions[f"ChangeDatatypeAction{label}"] = change_datatype_action
data_output["name"] = label
# That's the right data_output
break
else:
@@ -551,15 +556,7 @@ class SubWorkflowModule(WorkflowModule):
f"Workflow output '{workflow_output['output_name']}' defined, but not listed among data outputs"
)
continue
post_job_actions = step["post_job_actions"].copy()
change_datatype_action = post_job_actions.pop(f"ChangeDatatypeAction{data_output['name']}", None)
# Post job actions are referred to by tool output name,
# but that's not guaranteed to be unique within a workflow,
# but the label is unique.
if change_datatype_action:
post_job_actions[f"ChangeDatatypeAction{label}"] = change_datatype_action
self.post_job_actions.update(post_job_actions)
outputs.append(data_output)
return outputs
+1 -1
View File
@@ -517,7 +517,7 @@ class WorkflowRefactorExecutor:
# TODO: find workflow outputs that need to be dropped and report them
upgrade_inputs = step.module.get_all_inputs()
upgrade_outputs = step.module.get_all_outputs()
upgrade_output_names = [u.get("label") or u["name"] for u in upgrade_outputs]
upgrade_output_names = {u["name"] for u in upgrade_outputs}
upgrade_order_index = step_def["id"]
upgrade_label = step_def.get("label")
all_input_connections = step_def.get("input_connections")
@@ -587,8 +587,8 @@ steps:
node.output_data_row(output_name="workflow_output", extension="bam").wait_for_visible()
# Move canvas, so terminals are in viewport
self.move_center_of_canvas(xoffset=100, yoffset=100)
self.workflow_editor_connect("nested_workflow#out_file1", "metadata_bam#input_bam")
self.assert_connected("nested_workflow#out_file1", "metadata_bam#input_bam")
self.workflow_editor_connect("nested_workflow#workflow_output", "metadata_bam#input_bam")
self.assert_connected("nested_workflow#workflow_output", "metadata_bam#input_bam")
@selenium_test
def test_editor_duplicate_node(self):
+2 -2
View File
@@ -244,9 +244,9 @@ def test_subworkflow_new_outputs():
outputs = subworkflow_module.get_data_outputs()
assert len(outputs) == 2, len(outputs)
output1, output2 = outputs
assert output1["label"] == "out1"
assert output1["name"] == "out1"
assert output1["extensions"] == ["input"]
assert output2["label"] == "4:out_file1", output2["label"]
assert output2["name"] == "4:out_file1", output2["name"]
class MapOverTestCase(NamedTuple):