Skip to content

Commit 65d67ca

Browse files
committed
fix(debugger): correct update of test run results when suite teardown fails or is skipped during suite teardown for RF 4.1
this is a follow up to 80b742e closes #157
1 parent 22687c7 commit 65d67ca

File tree

1 file changed

+29
-19
lines changed

1 file changed

+29
-19
lines changed

packages/debugger/src/robotcode/debugger/listeners.py

Lines changed: 29 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -289,36 +289,46 @@ def enqueue(item: Union[running.TestSuite, running.TestCase]) -> Iterator[str]:
289289

290290
self._event_sended = True
291291

292-
def end_suite(self, data: running.TestSuite, suite_result: result.TestSuite) -> None:
293-
def report_status(item: Union[result.TestSuite, result.TestCase], message: str) -> None:
294-
if isinstance(item, result.TestCase):
292+
def end_suite(self, suite_data: running.TestSuite, suite_result: result.TestSuite) -> None:
293+
def report_status(
294+
data_item: Union[running.TestSuite, running.TestCase, None],
295+
result_item: Union[result.TestSuite, result.TestCase],
296+
message: str,
297+
) -> None:
298+
if isinstance(result_item, result.TestCase):
295299
Debugger.instance().send_event(
296300
self,
297301
Event(
298302
event="robotSetFailed",
299303
body=RobotExecutionEventBody(
300304
type="test",
301305
attributes={
302-
"longname": item.longname,
303-
"status": str(item.status),
304-
"elapsedtime": item.elapsedtime,
305-
"source": str(item.source),
306-
"lineno": item.lineno,
307-
"message": item.message,
306+
"longname": result_item.longname,
307+
"status": str(result_item.status),
308+
"elapsedtime": result_item.elapsedtime,
309+
"source": str(result_item.source),
310+
"lineno": data_item.lineno if data_item is not None else 0,
311+
"message": result_item.message,
308312
},
309-
id=f"{item.source or ''};{item.longname or ''}"
310-
+ (f";{item.lineno or 0}" if isinstance(item, result.TestCase) else ""),
313+
id=f"{result_item.source or ''};{result_item.longname or ''}"
314+
+ (
315+
f";{data_item.lineno if data_item is not None else 0}"
316+
if isinstance(result_item, result.TestCase)
317+
else ""
318+
),
311319
),
312320
),
313321
)
314-
if isinstance(item, result.TestSuite):
315-
for r in item.suites:
316-
report_status(r, message)
317-
for r in item.tests:
318-
report_status(r, message)
319-
320-
if data.teardown and suite_result.teardown.status in ["FAIL", "SKIP"]:
321-
report_status(suite_result, message=suite_result.message)
322+
if isinstance(result_item, result.TestSuite):
323+
for r in result_item.suites:
324+
p = next((i for i in data_item.suites if i.id == r.id), None) if data_item else None
325+
report_status(p, r, message)
326+
for r in result_item.tests:
327+
p = next((i for i in data_item.tests if i.id == r.id), None) if data_item else None
328+
report_status(p, r, message)
329+
330+
if suite_data.teardown and suite_result.teardown.status in ["FAIL", "SKIP"]:
331+
report_status(suite_data, suite_result, message=suite_result.message)
322332

323333
def start_test(self, data: running.TestCase, result: result.TestCase) -> None:
324334
pass

0 commit comments

Comments
 (0)