diff --git a/.github/workflows/ci-tests.yaml b/.github/workflows/ci-tests.yaml index e4808acc5..8981c657c 100644 --- a/.github/workflows/ci-tests.yaml +++ b/.github/workflows/ci-tests.yaml @@ -40,24 +40,24 @@ jobs: - commit: "76bdf9b55e2378432e0e6380ccedebb4a94ce483" exclude: "docker_entrypoint,modify_file_content" version: "v1.2" - - commit: "6eddbfb03b8861885832b26e322fbd0fcb9a884d" + - commit: "e71ddcc925d64c2efa68c2a56dd0edcc960a2170" exclude: "docker_entrypoint,modify_file_content" version: "v1.3" - docker: "singularity" - commit: "6eddbfb03b8861885832b26e322fbd0fcb9a884d" + commit: "e71ddcc925d64c2efa68c2a56dd0edcc960a2170" exclude: "docker_entrypoint,modify_file_content,iwd-container-entryname1" on: "ubuntu-24.04" python: "3.14" version: "v1.3" - docker: "kubernetes" - commit: "6eddbfb03b8861885832b26e322fbd0fcb9a884d" + commit: "e71ddcc925d64c2efa68c2a56dd0edcc960a2170" exclude: "docker_entrypoint,modify_file_content" on: "ubuntu-24.04" python: "3.14" version: "v1.3" - on: "macos-15-intel" python: "3.14" - commit: "6eddbfb03b8861885832b26e322fbd0fcb9a884d" + commit: "e71ddcc925d64c2efa68c2a56dd0edcc960a2170" exclude: "docker_entrypoint,modify_file_content" version: "v1.3" runs-on: ${{ matrix.on }} diff --git a/streamflow/cwl/translator.py b/streamflow/cwl/translator.py index 9d5b89689..aa44ddab8 100644 --- a/streamflow/cwl/translator.py +++ b/streamflow/cwl/translator.py @@ -2919,17 +2919,26 @@ def _translate_workflow_step( port_name, combinator_step.get_input_port(port_name) ) # Add skip ports if there is a condition without a loop - if cwl_condition and loop is None: + elif cwl_condition: for element_output in cwl_element.out: global_name = utils.get_name(step_name, cwl_step_name, element_output) port_name = posixpath.relpath(global_name, step_name) - skip_port = ( - external_output_ports[global_name] - if loop is not None - else internal_output_ports[global_name] + # Create cond forwarder to avoid propagating SKIPPED tokens + # within a subworkflow + cond_forwarder = workflow.create_step( + cls=ForwardTransformer, + name=global_name + "-output-forward-transformer", + ) + cond_forwarder.add_output_port( + port_name, internal_output_ports[global_name] + ) + internal_output_ports[global_name] = workflow.create_port() + cond_forwarder.add_input_port( + port_name, internal_output_ports[global_name] ) + # Point the skip port to the output port of the forwarder cast(CWLConditionalStep, conditional_step).add_skip_port( - port_name, skip_port + port_name, cond_forwarder.get_output_port() ) # Update output ports with the internal ones self.output_ports |= internal_output_ports