common-workflow-language / common-workflow-language/cwltool
Workflow factory does not resolve path to location
- Dominant language
- Python
- Stars
- 376
- Forks
- 255
- Avg merge
- 2d 7h
- Merged PRs (30d)
- 12
Description
## Expected Behavior
The `path` and `location` should be usable as described in https://www.commonwl.org/v1.0/CommandLineTool.html#File
## Actual Behavior
The `location` field is required even if the `path` is specified.
## Workflow Code
**`wf.cwl`**
```
class: Workflow
cwlVersion: v1.0
inputs:
input_1:
default:
class: File
path: data/1.txt
streamable: false
type: File
outputs:
output_0:
outputSource: step_1/output_stdout
streamable: false
type: File
steps:
step_1:
in:
input_stdin: input_1
out:
- output_stdout
run: wc.cwl
```
**`wc.cwl`**
```
arguments: []
baseCommand:
- wc
class: CommandLineTool
cwlVersion: v1.0
hints: []
inputs:
input_stdin:
default:
class: File
path: data/1.txt
inputBinding:
position: 1
separate: true
shellQuote: true
streamable: false
type: File
outputs:
output_stdout:
streamable: false
type: stdout
permanentFailCodes: []
requirements: []
stdin: $(inputs.input_stdin.path)
stdout: data/1.wc
successCodes: []
temporaryFailCodes: []
```
## Full Traceback
```pytb
Resolved 'wf.cwl' to 'file:///.../wf.cwl'
Traceback (most recent call last):
File "/.../cwltool/cwltool/process.py", line 594, in _init_job
normalizeFilesDirs(builder.job)
File "/.../cwltool/cwltool/pathmapper.py", line 80, in normalizeFilesDirs
visit_class(job, ("File", "Directory"), addLocation)
File "/.../cwltool/cwltool/utils.py", line 215, in visit_class
visit_class(rec[d], cls, op)
File "/.../cwltool/cwltool/utils.py", line 213, in visit_class
op(rec)
File "/.../cwltool/cwltool/pathmapper.py", line 56, in addLocation
raise validate.ValidationException("Anonymous file object must have 'contents' and 'basename' fields.")
schema_salad.validate.ValidationException: Anonymous file object must have 'contents' and 'basename' fields.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/.../bin/renku", line 11, in
load_entry_point('renku', 'console_scripts', 'renku')()
File "/.../lib/python3.6/site-packages/click/core.py", line 722, in __call__
return self.main(*args, **kwargs)
File "/.../lib/python3.6/site-packages/click/core.py", line 697, in main
rv = self.invoke(ctx)
File "/.../lib/python3.6/site-packages/click/core.py", line 1066, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/.../lib/python3.6/site-packages/click/core.py", line 895, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/.../lib/python3.6/site-packages/click/core.py", line 535, in invoke
return callback(*args, **kwargs)
File "/.../lib/python3.6/site-packages/click/decorators.py", line 64, in new_func
return ctx.invoke(f, obj, *args[1:], **kwargs)
File "/.../lib/python3.6/site-packages/click/core.py", line 535, in invoke
return callback(*args, **kwargs)
File "/.../lib/python3.6/site-packages/click/decorators.py", line 17, in new_func
return f(get_current_context(), *args, **kwargs)
File "/Users/jirka/.polybox/src/sdsc/renku-python/renku/cli/update.py", line 89, in update
outputs = workflow()
File "/.../cwltool/cwltool/factory.py", line 29, in __call__
out, status = self.factory.executor(self.t, kwargs, **execkwargs)
File "/.../cwltool/cwltool/executors.py", line 31, in __call__
return self.execute(*args, **kwargs)
File "/.../cwltool/cwltool/executors.py", line 71, in execute
self.run_jobs(t, job_order_object, logger, **kwargs)
File "/.../cwltool/cwltool/executors.py", line 100, in run_jobs
for r in jobiter:
File "/.../cwltool/cwltool/workflow.py", line 466, in job
builder = self._init_job(job_order, **kwargs)
File "/.../cwltool/cwltool/process.py", line 598, in _init_job
raise WorkflowException("Invalid job input record:\n" + Text(e))
cwltool.errors.WorkflowException: Invalid job input record:
Anonymous file object must have 'contents' and 'basename' fields.
```
## Your Environment
* cwltool version: 1.0.20180525185854
Contributor guide
Assessment
This issue has not been assessed yet.