Reviewed-by: Brian Paul <[email protected]>

On 03/23/2015 04:22 PM, Dylan Baker wrote:
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 = {}


_______________________________________________
Piglit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to