common-workflow-language / common-workflow-language/cwltool
cwltool does not support the specification in 3.7
- 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
Assessment
This issue has not been assessed yet.