This adds a couple of catches for results not found and cleanly exits without a traceback when this is an expected error condition.
Signed-off-by: Dylan Baker <[email protected]> --- framework/programs/summary.py | 12 ++++++++++-- framework/results.py | 7 ++++++- framework/summary.py | 6 +++++- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/framework/programs/summary.py b/framework/programs/summary.py index 8aaf709..b596fe9 100644 --- a/framework/programs/summary.py +++ b/framework/programs/summary.py @@ -156,7 +156,11 @@ def csv(input_): help="JSON results file to be converted") args = parser.parse_args(input_) - testrun = framework.results.load_results(args.testResults) + try: + testrun = framework.results.load_results(args.testResults) + except framework.results.ResultsLoadError as e: + print('Error: {}'.format(e.message), file=sys.stderr) + sys.exit(1) def write_results(output): for name, result in testrun.tests.iteritems(): @@ -186,7 +190,11 @@ def aggregate(input_): assert os.path.isdir(args.results_folder) outfile = os.path.join(args.results_folder, args.output) - results = framework.results.load_results(args.results_folder) + try: + results = framework.results.load_results(args.results_folder) + except framework.results.ResultsLoadError as e: + print('Error: {}'.format(e.message), file=sys.stderr) + sys.exit(1) try: results.write(outfile) diff --git a/framework/results.py b/framework/results.py index 3b8fc67..497c1c2 100644 --- a/framework/results.py +++ b/framework/results.py @@ -36,12 +36,17 @@ from framework.backends import (CURRENT_JSON_VERSION, piglit_encoder, JSONBackend) __all__ = [ + 'ResultsLoadError', 'TestrunResult', 'TestResult', 'load_results', ] +class ResultsLoadError(Exception): + pass + + class TestResult(dict): def recursive_update(self, dictionary): """ Recursively update the TestResult @@ -214,7 +219,7 @@ def load_results(filename): elif os.path.exists(os.path.join(filename, 'main')): filepath = os.path.join(filename, 'main') else: - raise Exception("No results found") + raise ResultsLoadError('No results found in "{}"'.format(filename)) with open(filepath, 'r') as f: testrun = TestrunResult.load(f) diff --git a/framework/summary.py b/framework/summary.py index 848486a..d709870 100644 --- a/framework/summary.py +++ b/framework/summary.py @@ -301,7 +301,11 @@ class Summary: # Create a Result object for each piglit result and append it to the # results list - self.results = [framework.results.load_results(i) for i in resultfiles] + try: + self.results = [framework.results.load_results(i) for i in resultfiles] + except framework.results.ResultsLoadError as e: + print('Error: {}'.format(e.message), file=sys.stderr) + sys.exit(1) self.status = {} self.fractions = {} -- 2.3.3 _______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
