@@ -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