Skip to content

Commit a7dc5c5

Browse files
author
Peter Amstutz
committed
Tests
1 parent f404c3c commit a7dc5c5

File tree

8 files changed

+49
-6
lines changed

8 files changed

+49
-6
lines changed

cwltool/load_tool.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,7 @@ def validate_document(document_loader, # type: Loader
251251
metadata[u"cwl:defaults"] = jobobj
252252

253253
if overrides:
254-
metadata[u"cwl:overrides"] = overrides
254+
metadata[u"cwltool:overrides"] = overrides
255255

256256
return document_loader, avsc_names, processobj, metadata, uri
257257

cwltool/main.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -868,6 +868,8 @@ def main(argsl=None, # type: List[str]
868868
stdout.write(json.dumps(processobj, indent=4))
869869
return 0
870870

871+
overrides.extend(metadata.get("cwltool:overrides", []))
872+
871873
conf_file = getattr(args, "beta_dependency_resolvers_configuration", None) # Text
872874
use_conda_dependencies = getattr(args, "beta_conda_dependencies", None) # Text
873875

@@ -879,6 +881,7 @@ def main(argsl=None, # type: List[str]
879881
make_tool_kwds["job_script_provider"] = dependencies_configuration
880882

881883
make_tool_kwds["find_default_container"] = functools.partial(find_default_container, args)
884+
make_tool_kwds["overrides"] = overrides
882885

883886
tool = make_tool(document_loader, avsc_names, metadata, uri,
884887
makeTool, make_tool_kwds)

cwltool/process.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -422,9 +422,8 @@ def avroize_type(field_type, name_prefix=""):
422422
avroize_type(field_type["items"], name_prefix)
423423
return field_type
424424

425-
def get_overrides(metadata, toolid): # type: (Dict[Text, Any], Text) -> List[Dict[Text, Any]]
425+
def get_overrides(overrides, toolid): # type: (List[Dict[Text, Any]], Text) -> List[Dict[Text, Any]]
426426
req = [] # type: List[Dict[Text, Any]]
427-
overrides = metadata.get("cwl:overrides", [])
428427
if not isinstance(overrides, list):
429428
raise validate.ValidationException("Expected overrides to be a list, but was %s" % type(overrides))
430429
for ov in overrides:
@@ -468,7 +467,7 @@ def __init__(self, toolpath_object, **kwargs):
468467
self.tool = toolpath_object
469468
self.requirements = (kwargs.get("requirements", []) +
470469
self.tool.get("requirements", []) +
471-
get_overrides(self.metadata, self.tool["id"]))
470+
get_overrides(kwargs.get("overrides", []), self.tool["id"]))
472471
self.hints = kwargs.get("hints", []) + self.tool.get("hints", [])
473472
self.formatgraph = None # type: Graph
474473
if "loader" in kwargs:

cwltool/workflow.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -521,6 +521,8 @@ def __init__(self, toolpath_object, **kwargs):
521521
try:
522522
self.steps.append(WorkflowStep(step, n, **kwargs))
523523
except validate.ValidationException as v:
524+
if _logger.isEnabledFor(logging.DEBUG):
525+
_logger.exception("Validation failed at")
524526
validation_errors.append(v)
525527

526528
if validation_errors:
@@ -668,7 +670,7 @@ def __init__(self, toolpath_object, pos, **kwargs):
668670

669671
kwargs["requirements"] = (kwargs.get("requirements", []) +
670672
toolpath_object.get("requirements", []) +
671-
get_overrides(kwargs["metadata"], self.id))
673+
get_overrides(kwargs["overrides"], self.id))
672674
kwargs["hints"] = kwargs.get("hints", []) + toolpath_object.get("hints", [])
673675

674676
try:
@@ -681,7 +683,7 @@ def __init__(self, toolpath_object, pos, **kwargs):
681683
strict=kwargs.get("strict"),
682684
fetcher_constructor=kwargs.get("fetcher_constructor"),
683685
resolver=kwargs.get("resolver"),
684-
overrides=kwargs.get("metadata", {}).get("overrides"))
686+
overrides=kwargs.get("overrides"))
685687
except validate.ValidationException as v:
686688
raise WorkflowException(
687689
u"Tool definition %s failed validation:\n%s" %

tests/override/echo-wf.cwl

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
cwlVersion: v1.0
2+
class: Workflow
3+
inputs:
4+
m1: string
5+
outputs:
6+
out:
7+
type: string
8+
outputSource: step1/out
9+
steps:
10+
step1:
11+
in:
12+
m1: m1
13+
out: [out]
14+
run: echo.cwl

tests/override/ov2.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
cwltool:overrides:
2+
"echo-wf.cwl#step1":
3+
- class: EnvVarRequirement
4+
envDef:
5+
MESSAGE: hello5

tests/override/ov3.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
cwltool:overrides:
2+
"echo-wf.cwl":
3+
- class: EnvVarRequirement
4+
envDef:
5+
MESSAGE: hello6

tests/test_override.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,24 @@ def test_overrides(self):
4343
stdout=sio), 0)
4444
self.assertEquals({"out": "zing hello4"}, json.loads(sio.getvalue()))
4545

46+
47+
sio = StringIO()
48+
self.assertEquals(main(["--overrides", get_data('tests/override/ov.yml'),
49+
get_data('tests/override/echo-wf.cwl'),
50+
get_data('tests/override/echo-job.yml')],
51+
stdout=sio), 0)
52+
self.assertEquals({"out": "zing hello2"}, json.loads(sio.getvalue()))
53+
4654
sio = StringIO()
4755
self.assertEquals(main(["--overrides", get_data('tests/override/ov2.yml'),
4856
get_data('tests/override/echo-wf.cwl'),
4957
get_data('tests/override/echo-job.yml')],
5058
stdout=sio), 0)
5159
self.assertEquals({"out": "zing hello5"}, json.loads(sio.getvalue()))
60+
61+
sio = StringIO()
62+
self.assertEquals(main(["--overrides", get_data('tests/override/ov3.yml'),
63+
get_data('tests/override/echo-wf.cwl'),
64+
get_data('tests/override/echo-job.yml')],
65+
stdout=sio), 0)
66+
self.assertEquals({"out": "zing hello6"}, json.loads(sio.getvalue()))

0 commit comments

Comments
 (0)