Skip to content

Commit f3490d3

Browse files
author
Peter Amstutz
committed
Fixes for inline parameters. Better error handling/reporting for cwltest.
1 parent ebc433c commit f3490d3

File tree

5 files changed

+19
-10
lines changed

5 files changed

+19
-10
lines changed

cwltool/cwltest.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -110,12 +110,12 @@ def run_test(args, i, t):
110110
_logger.warn(t.get("doc"))
111111
failed = True
112112
_logger.warn("%s expected %s\n%s got %s", key,
113-
t.get(key),
113+
json.dumps(t.get(key), indent=4, sort_keys=True),
114114
" " * len(key),
115-
out.get(key))
115+
json.dumps(out.get(key), indent=4, sort_keys=True))
116116

117117
if outdir:
118-
shutil.rmtree(outdir)
118+
shutil.rmtree(outdir, True)
119119

120120
if failed:
121121
return 1

cwltool/draft2tool.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ class ExpressionJob(object):
3232
def run(self, **kwargs):
3333
try:
3434
self.output_callback(self.builder.do_eval(self.script), "success")
35-
except Exception:
35+
except Exception as e:
36+
_logger.warn("Failed to evaluate expression:\n%s", e, exc_info=(e if kwargs.get('debug') else False))
3637
self.output_callback({}, "permanentFail")
3738

3839
def job(self, joborder, input_basedir, output_callback, **kwargs):

cwltool/expression.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,20 +96,21 @@ class DR(object):
9696

9797
def next_seg(remain, obj):
9898
if remain:
99-
print remain
10099
m = segment_re.match(remain)
101100
if m.group(0)[0] == '.':
102101
return next_seg(remain[m.end(0):], obj[m.group(0)[1:]])
103-
else:
102+
elif m.group(0)[1] in ("'", '"'):
104103
key = m.group(0)[2:-2].replace("\\'", "'").replace('\\"', '"')
105104
return next_seg(remain[m.end(0):], obj[key])
105+
else:
106+
key = m.group(0)[1:-1]
107+
return next_seg(remain[m.end(0):], obj[int(key)])
106108
else:
107109
return obj
108110

109111
def param_interpolate(ex, obj, strip=True):
110112
m = param_re.search(ex)
111113
if m:
112-
print "=", m.group(0), "/", m.group(0)[m.end(1) - m.start(0):-1]
113114
leaf = next_seg(m.group(0)[m.end(1) - m.start(0):-1], obj[m.group(1)])
114115
if strip and len(ex.strip()) == len(m.group(0)):
115116
return leaf

cwltool/main.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -373,7 +373,7 @@ def main(args=None,
373373
if args.conformance_test:
374374
loader = Loader({})
375375
else:
376-
loader = Loader({"id": "@id", "path": {"@type": "@id"}})
376+
loader = Loader({"path": {"@type": "@id"}})
377377

378378
if len(args.job_order) == 1 and args.job_order[0][0] != "-":
379379
job_order_file = args.job_order[0]
@@ -414,11 +414,18 @@ def main(args=None,
414414
job_order_object = {}
415415

416416
job_order_object.update({namemap[k]: v for k,v in cmd_line.items()})
417+
417418
_logger.debug("Parsed job order from command line: %s", job_order_object)
418419
else:
419420
job_order_object = None
420421

421-
if not job_order_object:
422+
for inp in t.tool["inputs"]:
423+
if "default" in inp and (not job_order_object or shortname(inp["id"]) not in job_order_object):
424+
if not job_order_object:
425+
job_order_object = {}
426+
job_order_object[shortname(inp["id"])] = inp["default"]
427+
428+
if not job_order_object and len(t.tool["inputs"]) > 0:
422429
parser.print_help()
423430
if toolparser:
424431
print "\nOptions for %s " % args.workflow

tests/test_examples.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ def test_params(self):
5959

6060
self.assertEqual(expr.param_interpolate("$(foo['b ar'].baz)", inputs), 2)
6161
self.assertEqual(expr.param_interpolate("$(foo['b\\'ar'].baz)", inputs), True)
62-
self.assertEqual(expr.param_interpolate("$(foo[\"b\\'ar\"].baz)", inputs), True)
62+
self.assertEqual(expr.param_interpolate("$(foo[\"b'ar\"].baz)", inputs), True)
6363
self.assertEqual(expr.param_interpolate("$(foo['b\\\"ar'].baz)", inputs), None)
6464

6565

0 commit comments

Comments
 (0)