Skip to content

Commit 3b05d04

Browse files
authored
allow exclusion of tests by name or number
1 parent 5b913e8 commit 3b05d04

File tree

1 file changed

+36
-6
lines changed

1 file changed

+36
-6
lines changed

cwltest/__init__.py

Lines changed: 36 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,18 @@ def arg_parser(): # type: () -> argparse.ArgumentParser
270270
default=None,
271271
help="Run specific tests using their short names separated by comma",
272272
)
273+
parser.add_argument(
274+
"-N",
275+
type=str,
276+
default=None,
277+
help="Exclude specific tests by number, format is 1,3-6,9",
278+
)
279+
parser.add_argument(
280+
"-S",
281+
type=str,
282+
default=None,
283+
help="Exclude specific tests by short names separated by comma",
284+
)
273285
parser.add_argument(
274286
"--tool",
275287
type=str,
@@ -340,6 +352,15 @@ def arg_parser(): # type: () -> argparse.ArgumentParser
340352

341353
return parser
342354

355+
def expand_number_range(nr: str) -> List[int]:
356+
ans: List[int] = []
357+
for s in nr.split(","):
358+
sp = s.split("-")
359+
if len(sp) == 2:
360+
ans.extend(range(int(sp[0]) - 1, int(sp[1])))
361+
else:
362+
ans.append(int(s) - 1)
363+
return ans
343364

344365
def main(): # type: () -> int
345366

@@ -430,12 +451,7 @@ def main(): # type: () -> int
430451
if args.n is not None or args.s is not None:
431452
ntest = []
432453
if args.n is not None:
433-
for s in args.n.split(","):
434-
sp = s.split("-")
435-
if len(sp) == 2:
436-
ntest.extend(list(range(int(sp[0]) - 1, int(sp[1]))))
437-
else:
438-
ntest.append(int(s) - 1)
454+
ntest = expand_number_range(args.n)
439455
if args.s is not None:
440456
for s in args.s.split(","):
441457
test_number = get_test_number_by_key(tests, "short_name", s)
@@ -447,6 +463,20 @@ def main(): # type: () -> int
447463
else:
448464
ntest = list(range(0, len(tests)))
449465

466+
exclude_n = []
467+
if args.N is not None:
468+
exclude_n = expand_number_range(args.N)
469+
if args.S is not None:
470+
for s in args.S.split(","):
471+
test_number = get_test_number_by_key(tests, "short_name", s)
472+
if test_number:
473+
exclude_n.append(test_number)
474+
else:
475+
_logger.error('Test with short name "%s" not found ', s)
476+
return 1
477+
478+
ntest = list(filter(lambda x: x not in exclude_n, ntest))
479+
450480
total = 0
451481
with ThreadPoolExecutor(max_workers=args.j) as executor:
452482
jobs = [

0 commit comments

Comments
 (0)