Skip to content

Commit d4886ff

Browse files
committed
failure exceptiontype in output.xml
1 parent 5515263 commit d4886ff

File tree

4 files changed

+12
-9
lines changed

4 files changed

+12
-9
lines changed

src/robot/output/loggerhelper.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,30 +49,31 @@ def info(self, msg):
4949
def warn(self, msg):
5050
self.write(msg, 'WARN')
5151

52-
def fail(self, msg):
52+
def fail(self, msg, error_type=None):
5353
html = False
5454
if msg.startswith("*HTML*"):
5555
html = True
5656
msg = msg[6:].lstrip()
57-
self.write(msg, 'FAIL', html)
57+
self.write(msg, 'FAIL', html, error_type)
5858

5959
def error(self, msg):
6060
self.write(msg, 'ERROR')
6161

62-
def write(self, message, level, html=False):
63-
self.message(Message(message, level, html))
62+
def write(self, message, level, html=False, error_type=None):
63+
self.message(Message(message, level, html, error_type=error_type))
6464

6565
def message(self, msg):
6666
raise NotImplementedError(self.__class__)
6767

6868

6969
class Message(BaseMessage):
70-
__slots__ = ['_message']
70+
__slots__ = ['_message', 'error_type']
7171

72-
def __init__(self, message, level='INFO', html=False, timestamp=None):
72+
def __init__(self, message, level='INFO', html=False, timestamp=None, error_type=None):
7373
message = self._normalize_message(message)
7474
level, html = self._get_level_and_html(level, html)
7575
timestamp = timestamp or get_timestamp()
76+
self.error_type=error_type
7677
BaseMessage.__init__(self, message, level, html, timestamp)
7778

7879
def _normalize_message(self, msg):

src/robot/output/xmllogger.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ def log_message(self, msg):
5858

5959
def _write_message(self, msg):
6060
attrs = {'timestamp': msg.timestamp or 'N/A', 'level': msg.level}
61+
if msg.error_type:
62+
attrs['exceptiontype'] = msg.error_type.__name__
6163
if msg.html:
6264
attrs['html'] = 'yes'
6365
self._writer.element('msg', msg.message, attrs)

src/robot/running/context.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -194,5 +194,5 @@ def info(self, message):
194194
def warn(self, message):
195195
self.output.warn(message)
196196

197-
def fail(self, message):
198-
self.output.fail(message)
197+
def fail(self, message, error_type=None):
198+
self.output.fail(message, error_type)

src/robot/running/statusreporter.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ def _get_failure(self, exc_type, exc_value, exc_tb, context):
6969
failure = HandlerExecutionFailed(ErrorDetails(exc_info))
7070
if failure.timeout:
7171
context.timeout_occurred = True
72-
context.fail(failure.full_message)
72+
context.fail(failure.full_message, exc_type)
7373
if failure.traceback:
7474
context.debug(failure.traceback)
7575
return failure

0 commit comments

Comments
 (0)