[Piglit] [PATCH 2/3] framework: Write exceptions and traceback to /dev/stderr and json results.
Jose Fonseca
jfonseca at vmware.com
Tue Dec 8 05:23:29 PST 2015
Exceptions were not reaching neither.
Junit is probably still busted. But the right fix is to not catch
generic Python exceptions, at all.
---
framework/results.py | 3 ++-
framework/test/base.py | 7 ++++---
templates/test_result.mako | 8 ++++++++
3 files changed, 14 insertions(+), 4 deletions(-)
diff --git a/framework/results.py b/framework/results.py
index eeffcb7..ef19fd4 100644
--- a/framework/results.py
+++ b/framework/results.py
@@ -196,6 +196,7 @@ class TestResult(object):
'subtests': self.subtests,
'time': self.time,
'exception': self.exception,
+ 'traceback': self.traceback,
'dmesg': self.dmesg,
}
return obj
@@ -215,7 +216,7 @@ class TestResult(object):
# pylint: disable=assigning-non-slot
inst = cls()
- for each in ['returncode', 'command', 'exception', 'environment',
+ for each in ['returncode', 'command', 'exception', 'traceback', 'environment',
'time', 'result', 'dmesg']:
if each in dict_:
setattr(inst, each, dict_[each])
diff --git a/framework/test/base.py b/framework/test/base.py
index bf998d8..ecd8bd9 100644
--- a/framework/test/base.py
+++ b/framework/test/base.py
@@ -184,11 +184,12 @@ class Test(object):
# This is a rare case where a bare exception is okay, since we're
# using it to log exceptions
except:
- exception = sys.exc_info()
+ exc_type, exc_value, exc_traceback = sys.exc_info()
+ traceback.print_exc(file=sysstderr)
self.result.result = 'fail'
- self.result.exception = "{}{}".format(*exception[:2])
+ self.result.exception = "{}{}".format(exc_type, exc_value)
self.result.traceback = "".join(
- traceback.format_tb(exception[2]))
+ traceback.format_tb(exc_traceback))
log.log(self.result.result)
else:
diff --git a/templates/test_result.mako b/templates/test_result.mako
index 229a5a7..ff08797 100644
--- a/templates/test_result.mako
+++ b/templates/test_result.mako
@@ -75,6 +75,14 @@
</pre>${value.command}</pre>
</td>
</tr>
+ % if value.exception:
+ <tr>
+ <td>Exception</td>
+ <td>
+ <pre>${value.exception | h}</pre>
+ </td>
+ </tr>
+ % endif
% if value.traceback:
<tr>
<td>Traceback</td>
--
2.5.0
More information about the Piglit
mailing list