[Piglit] [PATCH 2/3] framework: Write exceptions and traceback to /dev/stderr and json results.
Jose Fonseca
jfonseca at vmware.com
Tue Dec 8 08:15:27 PST 2015
On 08/12/15 15:42, Dylan Baker wrote:
> On Tue, Dec 08, 2015 at 01:23:29PM +0000, Jose Fonseca wrote:
>> 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)
>
> typo: sys.stderr
>
>> 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
>>
> This patch conflates two different issues. one is that you want the
> error printed,
Split now.
> one is that it needs to be stored in the json and
> presented in the html summary. I'd prefer to see that as two separate
> changes.
>
> You said in a previous version that you wanted the suite to stop if you
> hit this issue, I sent a patch to do that.
I didn't notice. I wasn't CC'ed.
Jose
More information about the Piglit
mailing list