[Piglit] [PATCH 1/5] framework/html: guard against errors writing individual test results

Marek Olšák maraeo at gmail.com
Wed May 2 20:32:43 UTC 2018


From: Nicolai Hähnle <nicolai.haehnle at amd.com>

---
 framework/summary/html_.py | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/framework/summary/html_.py b/framework/summary/html_.py
index f7fdc8576..512b42c24 100644
--- a/framework/summary/html_.py
+++ b/framework/summary/html_.py
@@ -24,20 +24,21 @@
 
 from __future__ import (
     absolute_import, division, print_function, unicode_literals
 )
 import errno
 import getpass
 import os
 import shutil
 import sys
 import tempfile
+import traceback
 
 import mako
 from mako.lookup import TemplateLookup
 import six
 
 # a local variable status exists, prevent accidental overloading by renaming
 # the module
 from framework import backends, exceptions, core
 
 from .common import Results, escape_filename, escape_pathname
@@ -106,27 +107,30 @@ def _make_testrun_info(results, destination, exclude=None):
 
         # Then build the individual test results
         for key, value in six.iteritems(each.tests):
             html_path = os.path.join(destination, name,
                                      escape_filename(key + ".html"))
             temp_path = os.path.dirname(html_path)
 
             if value.result not in exclude:
                 core.check_dir(temp_path)
 
-                with open(html_path, 'wb') as out:
-                    out.write(_TEMPLATES.get_template(
-                        'test_result.mako').render(
-                            testname=key,
-                            value=value,
-                            css=os.path.relpath(result_css, temp_path),
-                            index=os.path.relpath(index, temp_path)))
+                try:
+                    with open(html_path, 'wb') as out:
+                        out.write(_TEMPLATES.get_template(
+                            'test_result.mako').render(
+                                testname=key,
+                                value=value,
+                                css=os.path.relpath(result_css, temp_path),
+                                index=os.path.relpath(index, temp_path)))
+                except OSError as e:
+                    traceback.print_exc()
 
 
 def _make_comparison_pages(results, destination, exclude):
     """Create the pages of comparisons."""
     pages = frozenset(['changes', 'problems', 'skips', 'fixes',
                        'regressions', 'enabled', 'disabled'])
 
     # Index.html is a bit of a special case since there is index, all, and
     # alltests, where the other pages all use the same name. ie,
     # changes.html, changes, and page=changes.
-- 
2.17.0



More information about the Piglit mailing list