29 self.
resultresult.set_execution_mode(merged)
30 merged.suite.visit(self)
31 self.
resultresult.errors.add(merged.errors)
37 old = self.
_find_find(self.
currentcurrent.suites, suite.name)
39 old.starttime = old.endtime =
None
41 old.metadata.update(suite.metadata)
42 old.setup = suite.setup
43 old.teardown = suite.teardown
47 self.
currentcurrent.suites.append(suite)
48 return old
is not None
51 root = self.
resultresult.suite
53 raise DataError(f
"Cannot merge outputs containing different root suites. "
54 f
"Original suite is '{root.name}' and merged is '{name}'.")
67 old = self.
_find_find(self.
currentcurrent.tests, test.name)
70 self.
currentcurrent.tests.append(test)
75 index = self.
currentcurrent.tests.index(old)
76 self.
currentcurrent.tests[index] = test
80 prefix = f
'*HTML* {item_type} added from merged output.'
83 return ''.join([prefix,
'<hr>', self.
_html_html(item.message)])
86 if message.startswith(
'*HTML*'):
87 return message[6:].lstrip()
91 header = (f
'*HTML* <span class="merge">{test_or_task("Test", self.rpa)} '
92 f
'has been re-executed and results merged.</span>')
102 msg = f
'{self._status_header(state)} {self._status_text(test.status)}<br>'
104 msg += f
'{self._message_header(state)} {self._html(test.message)}<br>'
108 return f
'<span class="{state.lower()}-status">{state} status:</span>'
111 return f
'<span class="{status.lower()}">{status}</span>'
114 return f
'<span class="{state.lower()}-message">{state} message:</span>'
117 if not test.message.startswith(merge_header):
119 status_and_message = test.message.split(
'<hr>', 1)[1]
127 msg = (f
'*HTML* {test_or_task("Test", self.rpa)} has been re-executed and '
128 f
'results merged. Latter result had {self._status_text("SKIP")} status '
129 f
'and was ignored. Message:\n{self._html(new.message)}')
131 msg += f
'<hr>Original message:\n{self._html(test.message)}'
Interface to ease traversing through a test suite structure.
def _create_add_message(self, item, suite=False)
def _find_root(self, name)
def start_suite(self, suite)
Called when a suite starts.
def _find(self, items, name)
def _message_header(self, state)
def visit_test(self, test)
Implements traversing through tests.
def _status_text(self, status)
def _format_old_status_and_message(self, test, merge_header)
def _status_header(self, state)
def _create_skip_message(self, test, new)
def _create_merge_message(self, new, old)
def __init__(self, result, rpa=False)
def _format_status_and_message(self, state, test)
def end_suite(self, suite)
Called when a suite ends.
def html_escape(text, linkify=True)
def test_or_task(str text, bool rpa)
Replace 'test' with 'task' in the given text depending on rpa.