Skip to content

Commit 4c905b8

Browse files
authored
fix #549 (#1135)
1 parent 478c2ff commit 4c905b8

File tree

3 files changed

+54
-2
lines changed

3 files changed

+54
-2
lines changed

cwltool/workflow.py

+6-2
Original file line numberDiff line numberDiff line change
@@ -672,15 +672,19 @@ def __init__(self,
672672
param["type"] = "Any"
673673
param["not_connected"] = True
674674
else:
675+
if isinstance(step_entry, Mapping):
676+
step_entry_name = step_entry['id']
677+
else:
678+
step_entry_name = step_entry
675679
validation_errors.append(
676680
SourceLine(self.tool["out"], index).makeError(
677681
"Workflow step output '%s' does not correspond to"
678-
% shortname(step_entry))
682+
% shortname(step_entry_name))
679683
+ "\n" + SourceLine(self.embedded_tool.tool, "outputs").makeError(
680684
" tool output (expected '%s')" % (
681685
"', '".join(
682686
[shortname(tool_entry["id"]) for tool_entry in
683-
self.embedded_tool.tool[toolfield]]))))
687+
self.embedded_tool.tool['outputs']]))))
684688
param["id"] = inputid
685689
param.lc.line = toolpath_object[stepfield].lc.data[index][0]
686690
param.lc.col = toolpath_object[stepfield].lc.data[index][1]

tests/checker_wf/broken-wf3.cwl

+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#!/usr/bin/env cwl-runner
2+
class: Workflow
3+
cwlVersion: v1.0
4+
requirements:
5+
ScatterFeatureRequirement: {}
6+
MultipleInputFeatureRequirement: {}
7+
StepInputExpressionRequirement: {}
8+
inputs:
9+
letters0:
10+
type: [string, int]
11+
default: "a0"
12+
letters1:
13+
type: string[]
14+
default: ["a1", "b1"]
15+
letters2:
16+
type: [string, int]
17+
default: "a2"
18+
letters3:
19+
type: string[]
20+
default: ["a3", "b3"]
21+
letters4:
22+
type: string
23+
default: "a4"
24+
letters5:
25+
type: string[]
26+
default: ["a5", "b5", "c5"]
27+
28+
outputs:
29+
all:
30+
type: File
31+
outputSource: cat/txt
32+
33+
steps:
34+
- id: embedded
35+
run: functional-wf.cwl
36+
in: []
37+
out:
38+
- id: All
39+
- id: cat
40+
run: cat.cwl
41+
in:
42+
- id: cat_in
43+
source:
44+
- embedded/All
45+
out: [txt]

tests/test_examples.py

+3
Original file line numberDiff line numberDiff line change
@@ -659,6 +659,9 @@ def test_static_checker():
659659
with pytest.raises(schema_salad.validate.ValidationException):
660660
factory.make(get_data("tests/checker_wf/broken-wf2.cwl"))
661661

662+
with pytest.raises(schema_salad.validate.ValidationException):
663+
factory.make(get_data("tests/checker_wf/broken-wf3.cwl"))
664+
662665

663666
def test_var_spool_cwl_checker1():
664667
"""Confirm that references to /var/spool/cwl are caught."""

0 commit comments

Comments
 (0)