common-workflow-language / cwltool

Common Workflow Language reference implementation
https://cwltool.readthedocs.io/
Apache License 2.0
332 stars 230 forks source link

Bizarre javascript error when running CWL with no javascript #1590

Closed jdidion closed 2 years ago

jdidion commented 2 years ago

I am trying to run the cat-tool-shortcut conformance test that has been packed using cwlpack --json --add-ids:

{
  "baseCommand": [
    "cat"
  ],
  "class": "CommandLineTool",
  "cwlVersion": "v1.2",
  "id": "cat-tool-shortcut.cwl",
  "inputs": [
    {
      "id": "file1",
      "type": "stdin"
    }
  ],
  "outputs": [
    {
      "id": "output",
      "outputBinding": {
        "glob": "output"
      },
      "type": "File"
    }
  ],
  "requirements": [
    {
      "class": "DockerRequirement",
      "dockerPull": "debian:stretch-slim"
    }
  ],
  "stdout": "output"
}

cwltool fails with the following error:

Syntax error in parameter reference '(inputs.cat-tool-shortcut.cwl/file1.path)'. This could be due to using Javascript code without specifying InlineJavascriptRequirement.
Traceback (most recent call last):
  File "/Users/jdidion/.pyenv/versions/3.8.11/envs/dxc/lib/python3.8/site-packages/cwltool/expression.py", line 393, in do_eval
    return interpolate(
  File "/Users/jdidion/.pyenv/versions/3.8.11/envs/dxc/lib/python3.8/site-packages/cwltool/expression.py", line 297, in interpolate
    e = evaluator(
  File "/Users/jdidion/.pyenv/versions/3.8.11/envs/dxc/lib/python3.8/site-packages/cwltool/expression.py", line 249, in evaluator
    raise JavascriptException(
cwltool.sandboxjs.JavascriptException: Syntax error in parameter reference '(inputs.cat-tool-shortcut.cwl/file1.path)'. This could be due to using Javascript code without specifying InlineJavascriptRequirement.
ERROR Input object failed validation:
test/cwl_conformance/tools/cat-tool-shortcut.cwl.json:1:1: Expression evaluation error:
                                                           Syntax error in parameter reference
                                                           '(inputs.cat-tool-shortcut.cwl/file1.path)'.
                                                           This could be due to using Javascript
                                                           code without specifying
                                                           InlineJavascriptRequirement.
mr-c commented 2 years ago

I can confirm; and that this is due to the injected id field. Testing a fix now.