Skip to content

Commit 64bed11

Browse files
authored
Add --all option to pav build (#885)
* Add flag to build/run all tests * Add run --all argument * Remove accidental breakpoint * Fix whitespace issue * Pass unit test
1 parent 4f78f56 commit 64bed11

File tree

1 file changed

+38
-17
lines changed

1 file changed

+38
-17
lines changed

lib/pavilion/commands/run.py

Lines changed: 38 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from pavilion import cmd_utils
1010
from pavilion import groups
1111
from pavilion import output
12+
from pavilion import resolver
1213
from pavilion.enums import Verbose
1314
from pavilion.errors import TestSeriesError, PavilionError
1415
from pavilion.series.series import TestSeries
@@ -61,6 +62,10 @@ def _generic_arguments(parser):
6162
:param argparse.ArgumentParser parser:
6263
"""
6364

65+
parser.add_argument(
66+
"-a", "--all", action="store_true",
67+
help="Build or run all known tests."
68+
)
6469
parser.add_argument(
6570
'-p', '--platform', action='store',
6671
help='The platform to configure this test for. If not '
@@ -152,13 +157,19 @@ def run(self, pav_cfg, args, log_results: bool = True):
152157
ignore_errors=args.ignore_errors,
153158
)
154159

155-
tests = args.tests
156-
try:
157-
tests.extend(cmd_utils.read_test_files(pav_cfg, args.files))
158-
except PavilionError as err:
159-
output.fprint(self.errfile, "Error reading given test list files.\n{}"
160-
.format(err))
161-
return errno.EINVAL
160+
if args.all:
161+
resolv = resolver.TestConfigResolver(pav_cfg)
162+
suites = resolv.find_all_tests()
163+
tests = list(suites.keys())
164+
args.files = []
165+
else:
166+
tests = args.tests
167+
try:
168+
tests.extend(cmd_utils.read_test_files(pav_cfg, args.files))
169+
except PavilionError as err:
170+
output.fprint(self.errfile, "Error reading given test list files.\n{}"
171+
.format(err))
172+
return errno.EINVAL
162173

163174
local_builds_only = getattr(args, 'local_builds_only', False)
164175
report_status = getattr(args, 'status', False)
@@ -167,18 +178,13 @@ def run(self, pav_cfg, args, log_results: bool = True):
167178
series_obj = TestSeries(pav_cfg, series_cfg=series_cfg,
168179
verbosity=Verbose[args.verbosity],
169180
outfile=self.outfile)
170-
testset_name = cmd_utils.get_testset_name(pav_cfg, args.tests, args.files)
181+
testset_name = cmd_utils.get_testset_name(pav_cfg, tests, args.files)
171182

172183
if args.group:
173-
try:
174-
group = groups.TestGroup(pav_cfg, args.group)
175-
group.add([series_obj])
176-
except groups.TestGroupError as err:
177-
output.fprint(self.errfile,
178-
"Could not add series to group '{}'".format(args.group),
179-
color=output.RED)
180-
output.fprint(self.errfile, err.pformat())
181-
return errno.EINVAL
184+
ret = self._add_to_group(pav_cfg, series_obj, args.group)
185+
186+
if ret != 0:
187+
return ret
182188

183189
else:
184190
output.fprint(self.outfile, "Created Test Series {}.".format(series_obj.name))
@@ -211,3 +217,18 @@ def run(self, pav_cfg, args, log_results: bool = True):
211217
)
212218

213219
return 0
220+
221+
def _add_to_group(self, pav_cfg: "PavConfig", series: "TestSeries", group: str) -> int:
222+
"""Add the given series to the given group."""
223+
224+
try:
225+
group = groups.TestGroup(pav_cfg, group)
226+
group.add([series])
227+
228+
return 0
229+
except groups.TestGroupError as err:
230+
output.fprint(self.errfile,
231+
"Could not add series to group '{}'".format(group),
232+
color=output.RED)
233+
output.fprint(self.errfile, err.pformat())
234+
return errno.EINVAL

0 commit comments

Comments
 (0)