common-workflow-language / common-workflow-language/cwltool

cwltool does not support the specification in 3.7

Open
#793 0 comments 1 reaction 0 assignees View on GitHub
Dominant language
Python
Stars
376
Forks
255
Avg merge
2d 7h
Merged PRs (30d)
12

Description

In my understanding, [Section 3.7](https://www.commonwl.org/v1.0/CommandLineTool.html#Discovering_CWL_documents_on_a_local_filesystem) says that the platforms must look in several directories such as `~/.local/share/commonwl` to search for CWL documents.
However, `cwltool` does not look in these directories.

## How to reproduce
```console
$ git clone git@github.com:common-workflow-language/common-workflow-language.git
$ cd common-workflow-language/v1.0/v1.0
$ mkdir -p ~/.local/share/commonwl
$ mv echo-tool-default.cwl ~/.local/share/commonwl
$ cwltool echo-wf-default.cwl
```

## Expected Behavior
`cwltool` can find `echo-tool-default.cwl` for step `step1` in `echo-wf-default.cwl`.

```console
$ cwltool echo-wf-default.cwl
...
[workflow echo-wf-default.cwl] completed success
{
"default_output": "workflow_default"
}
Final process status is success
```

## Actual Behavior
`cwltool` failed to find `echo-tool-default.cwl`. It seems not to look in `~/.local/share/commonwl`.

```console
$ cwltool --debug echo-wf-default.cwl
/Users/tom-tan/.pyenv/versions/3.6.5/bin/cwltool 1.0.20180403145700
Resolved 'echo-wf-default.cwl' to 'file:///Users/tom-tan/common-workflow-language/v1.0/v1.0/echo-wf-default.cwl'
Tool definition failed validation:
echo-wf-default.cwl:7:1: checking field `steps`
echo-wf-default.cwl:8:3: checking object `echo-wf-default.cwl#step1`
echo-wf-default.cwl:9:5: Field `run` contains undefined reference to `file:///Users/tom-tan/common-workflow-language/v1.0/v1.0/echo-tool-default.cwl`
Traceback (most recent call last):
File "/Users/tom-tan/.pyenv/versions/3.6.5/lib/python3.6/site-packages/cwltool/main.py", line 483, in main
do_validate=args.do_validate)
File "/Users/tom-tan/.pyenv/versions/3.6.5/lib/python3.6/site-packages/cwltool/load_tool.py", line 266, in validate_document
processobj, new_metadata = document_loader.resolve_all(workflowobj, fileuri, checklinks=do_validate)
File "/Users/tom-tan/.pyenv/versions/3.6.5/lib/python3.6/site-packages/schema_salad/ref_resolver.py", line 913, in resolve_all
self.validate_links(document, u"", all_doc_ids)
File "/Users/tom-tan/.pyenv/versions/3.6.5/lib/python3.6/site-packages/schema_salad/ref_resolver.py", line 1081, in validate_links
raise errors[0]
schema_salad.validate.ValidationException: echo-wf-default.cwl:7:1: checking field `steps`
echo-wf-default.cwl:8:3: checking object `echo-wf-default.cwl#step1`
echo-wf-default.cwl:9:5: Field `run` contains undefined reference to `file:///Users/tom-tan/common-workflow-language/v1.0/v1.0/echo-tool-default.cwl`
```
## Workflow Code

[echo-wf-default.cwl](https://github.com/common-workflow-language/common-workflow-language/blob/master/v1.0/v1.0/echo-wf-default.cwl)
```cwl
class: Workflow
cwlVersion: v1.0

inputs: []

steps:
step1:
run: echo-tool-default.cwl
in:
in:
default: workflow_default
out: [out]

outputs:
default_output:
type: string
outputSource: step1/out
```

[echo-tool-default.cwl](https://github.com/common-workflow-language/common-workflow-language/blob/master/v1.0/v1.0/echo-tool-default.cwl)
```cwl
#!/usr/bin/env cwl-runner

class: CommandLineTool
cwlVersion: v1.0
inputs:
in:
type: string
default: tool_default
inputBinding:
position: 1
outputs:
out:
type: string
outputBinding:
glob: out.txt
loadContents: true
outputEval: $(self[0].contents)
baseCommand: [echo, -n]
stdout: out.txt
```

## Full Traceback
```pytb
Traceback (most recent call last):
File "/Users/tom-tan/.pyenv/versions/3.6.5/lib/python3.6/site-packages/cwltool/main.py", line 483, in main
do_validate=args.do_validate)
File "/Users/tom-tan/.pyenv/versions/3.6.5/lib/python3.6/site-packages/cwltool/load_tool.py", line 266, in validate_document
processobj, new_metadata = document_loader.resolve_all(workflowobj, fileuri, checklinks=do_validate)
File "/Users/tom-tan/.pyenv/versions/3.6.5/lib/python3.6/site-packages/schema_salad/ref_resolver.py", line 913, in resolve_all
self.validate_links(document, u"", all_doc_ids)
File "/Users/tom-tan/.pyenv/versions/3.6.5/lib/python3.6/site-packages/schema_salad/ref_resolver.py", line 1081, in validate_links
raise errors[0]
schema_salad.validate.ValidationException: echo-wf-default.cwl:7:1: checking field `steps`
echo-wf-default.cwl:8:3: checking object `echo-wf-default.cwl#step1`
echo-wf-default.cwl:9:5: Field `run` contains undefined reference to `file:///Users/tom-tan/common-workflow-language/v1.0/v1.0/echo-tool-default.cwl`
```

## Your Environment
* cwltool version:
```console
$ cwltool --version
/Users/tom-tan/.pyenv/versions/3.6.5/bin/cwltool 1.0.20180403145700
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.