[Piglit] [PATCH] framework; Catch "No results found" exception

Dylan Baker baker.dylan.c at gmail.com
Mon Mar 23 15:22:13 PDT 2015


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 <dylanx.c.baker at intel.com>
---
 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



More information about the Piglit mailing list