Skip to content

Commit 683f8d7

Browse files
author
Peter Amstutz
authored
Merge pull request #93 from common-workflow-language/required-unsupported
Report when a required test returns unsupported feature
2 parents de1561c + 569296d commit 683f8d7

File tree

2 files changed

+28
-9
lines changed

2 files changed

+28
-9
lines changed

cwltest/__init__.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -126,13 +126,16 @@ def run_test(args, # type: argparse.Namespace
126126
_logger.error(outstr)
127127
_logger.error(outerr)
128128
except subprocess.CalledProcessError as err:
129-
if err.returncode == UNSUPPORTED_FEATURE:
129+
if err.returncode == UNSUPPORTED_FEATURE and REQUIRED not in test.get("tags", ["required"]):
130130
return TestResult(UNSUPPORTED_FEATURE, outstr, outerr, duration, args.classname)
131131
if test.get("should_fail", False):
132132
return TestResult(0, outstr, outerr, duration, args.classname)
133133
_logger.error(u"""Test %i failed: %s""", test_number, " ".join([quote(tc) for tc in test_command]))
134134
_logger.error(test.get("doc"))
135-
_logger.error(u"Returned non-zero")
135+
if err.returncode == UNSUPPORTED_FEATURE:
136+
_logger.error(u"Does not support required feature")
137+
else:
138+
_logger.error(u"Returned non-zero")
136139
_logger.error(outerr)
137140
return TestResult(1, outstr, outerr, duration, args.classname, str(err))
138141
except (yamlscanner.ScannerError, TypeError) as err:
@@ -273,9 +276,9 @@ def main(): # type: () -> int
273276
if args.l:
274277
for i, t in enumerate(tests):
275278
if t.get("short_name"):
276-
print(u"[%i] %s: %s" % (i + 1, t["short_name"], t["doc"].strip()))
279+
print(u"[%i] %s: %s" % (i + 1, t["short_name"], t.get("doc", "").strip()))
277280
else:
278-
print(u"[%i] %s" % (i + 1, t["doc"].strip()))
281+
print(u"[%i] %s" % (i + 1, t.get("doc", "").strip()))
279282

280283
return 0
281284

cwltest/tests/test_categories.py

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import unittest
2-
2+
import re
33
import os
44
from os import linesep as n
5+
from os import sep as p
56

67
from .util import run_with_mock_cwl_runner, get_data
78
import xml.etree.ElementTree as ET
@@ -13,11 +14,26 @@ def test_unsupported_with_required_tests(self):
1314
args = ["--test", get_data("tests/test-data/required-unsupported.yml")]
1415
error_code, stdout, stderr = run_with_mock_cwl_runner(args)
1516
self.assertEqual(error_code, 1)
17+
print(stderr)
18+
stderr = re.sub(r" '?--outdir=[^ ]*", '', stderr)
19+
if os.name == 'nt':
20+
q = "'"
21+
else:
22+
q = ""
1623
self.assertEqual(
17-
"Test [1/2] Required test that is unsupported (without tags){n}{n}"
18-
"Test [2/2] Required test that is unsupported (with tags){n}{n}"
19-
"0 tests passed, 2 failures, 0 unsupported "
20-
"features{n}".format(n=n), stderr)
24+
"Test [1/2] Required test that is unsupported (without tags){n}"
25+
"{n}"
26+
"Test 1 failed: mock-cwl-runner --quiet return-unsupported.cwl {q}v1.0{p}cat-job.json{q}{n}"
27+
"Required test that is unsupported (without tags){n}"
28+
"Does not support required feature{n}"
29+
"{n}"
30+
"Test [2/2] Required test that is unsupported (with tags){n}"
31+
"{n}"
32+
"Test 2 failed: mock-cwl-runner --quiet return-unsupported.cwl {q}v1.0{p}cat-job.json{q}{n}"
33+
"Required test that is unsupported (with tags){n}"
34+
"Does not support required feature{n}"
35+
"{n}"
36+
"0 tests passed, 2 failures, 0 unsupported features{n}".format(n=n, p=p, q=q), stderr)
2137

2238
def test_unsupported_with_optional_tests(self):
2339
args = ["--test", get_data("tests/test-data/optional-unsupported.yml")]

0 commit comments

Comments
 (0)