[Piglit] [PATCH 2/2] framework: Provide more helpful error message when loading results fails

Dylan Baker dylan at pnwbakers.com
Fri Nov 4 19:49:40 UTC 2016


Currently if there is a typo in a filename (which piglit uses to
determine if a particular result can be loaded) then a message about
an unsupported backend will be generated. Obviously, the more common
reason for this error is a typo or pointing at the wrong directory, not
that you've tried to load a result format piglit doesn't understand.

With that in mind this patch catches that exception in every case and
raises a PiglitFatalError, appending a message that this is probably a
typo or that you've pointed at the wrong directory.

cc: Brian Paul <brianp at vmware.com>
Signed-off-by: Dylan Baker <dylanx.c.baker at intel.com>
---
 framework/programs/summary.py | 10 +++++++++-
 framework/summary/console_.py | 10 +++++++++-
 framework/summary/html_.py    | 19 ++++++++++++++++---
 3 files changed, 34 insertions(+), 5 deletions(-)

diff --git a/framework/programs/summary.py b/framework/programs/summary.py
index e400d9a..784e084 100644
--- a/framework/programs/summary.py
+++ b/framework/programs/summary.py
@@ -186,7 +186,15 @@ def csv(input_):
                         help="JSON results file to be converted")
     args = parser.parse_args(unparsed)
 
-    testrun = backends.load(args.testResults)
+    try:
+        testrun = backends.load(args.testResults)
+    except backends.BackendError as e:
+        raise exceptions.PiglitFatalError(
+            six.text_type(e) + \
+            '\n'
+            'This might mean that you pointed at the wrong directory or a '
+            'typo in your file extension.')
+
 
     def write_results(output):
         for name, result in six.iteritems(testrun.tests):
diff --git a/framework/summary/console_.py b/framework/summary/console_.py
index e17a1d8..b8cdafb 100644
--- a/framework/summary/console_.py
+++ b/framework/summary/console_.py
@@ -30,6 +30,7 @@ import textwrap
 import six
 
 from framework import grouptools, backends
+from framework import exceptions
 from .common import Results
 
 __all__ = [
@@ -100,7 +101,14 @@ def _print_result(results, list_):
 def console(results, mode):
     """ Write summary information to the console """
     assert mode in ['summary', 'diff', 'incomplete', 'all'], mode
-    results = Results([backends.load(r) for r in results])
+    try:
+        results = Results([backends.load(r) for r in results])
+    except backends.BackendError as e:
+        raise exceptions.PiglitFatalError(
+            six.text_type(e) + \
+            '\n'
+            'This might mean that you pointed at the wrong directory or a '
+            'typo in your file extension.')
 
     # Print the name of the test and the status from each test run
     if mode == 'all':
diff --git a/framework/summary/html_.py b/framework/summary/html_.py
index f7fdc85..4983b62 100644
--- a/framework/summary/html_.py
+++ b/framework/summary/html_.py
@@ -172,7 +172,14 @@ def html(results, destination, exclude):
     heavy lifting, this method just passes it a bunch of dicts and lists
     of dicts, which mako turns into pretty HTML.
     """
-    results = Results([backends.load(i) for i in results])
+    try:
+        results = Results([backends.load(r) for r in results])
+    except backends.BackendError as e:
+        raise exceptions.PiglitFatalError(
+            six.text_type(e) + \
+            '\n'
+            'This might mean that you pointed at the wrong directory or a '
+            'typo in your file extension.')
 
     _copy_static_files(destination)
     _make_testrun_info(results, destination, exclude)
@@ -181,8 +188,14 @@ def html(results, destination, exclude):
 
 def feat(results, destination, feat_desc):
     """Produce HTML feature readiness summary."""
-
-    feat_res = FeatResults([backends.load(i) for i in results], feat_desc)
+    try:
+        feat_res = FeatResults([backends.load(i) for i in results], feat_desc)
+    except backends.BackendError as e:
+        raise exceptions.PiglitFatalError(
+            six.text_type(e) + \
+            '\n'
+            'This might mean that you pointed at the wrong directory or a '
+            'typo in your file extension.')
 
     _copy_static_files(destination)
     _make_testrun_info(feat_res, destination)
-- 
2.10.2



More information about the Piglit mailing list