[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