cwltool icon indicating copy to clipboard operation
cwltool copied to clipboard

Selected input parameter type is not propagated as output parameter type

Open adrabent opened this issue 1 year ago • 0 comments


Expected Behavior

cwltool should treat the input type identical to the output type (at least if it accepts two different types)

Actual Behavior

cwltool crashes, because it always uses the output type Directory instead of Directory[]

Workflow Code

class: CommandLineTool
cwlVersion: v1.2
id: pass
baseCommand: echo
inputs:
  - id: msin
    type: 
      - Directory
      - Directory[]
outputs:
  - id: msout
    type:
      - Directory
      - Directory[]
    outputBinding:
      outputEval: $(inputs.msin)

I call the command like this:

cwltool steps/pass.cwl debug.json

with debug.json:

{
    "msin": [
                {"class": "Directory", "path": "<dir1>"},
                {"class": "Directory", "path": "<dir2>"}
            ]
}

Full Traceback

INFO /usr/local/conda/envs/toil/bin/cwltool 3.1.20240508115724
INFO Resolved 'steps/pass.cwl' to 'file:///home/alex/software/LINC/steps/pass.cwl'
INFO [job pass] /tmp/6scfxd33$ echo

ERROR [job pass] Job error:
("Error collecting output for parameter 'msout': steps/pass.cwl:19:7: Multiple matches for output item that is a single file.", {})
WARNING [job pass] completed permanentFail
{}
WARNING Final process status is permanentFail

Your Environment

  • cwltool version: 3.1.20240508115724

What works

  • Removing one element from debug.json so that the array has only one element
  • Removing Directory as a possible output type for msout

adrabent avatar Sep 09 '24 10:09 adrabent