3939def parse_func (file_path : Path ) -> XMLParser :
4040 """Parse the XML file with lxml.etree.XMLParser as the backend."""
4141 xml_parser = XMLParser (huge_tree = True )
42- return parse (file_path , xml_parser )
42+ return parse (file_path , xml_parser ) # type: ignore # noqa: PGH003, S320
4343
4444
4545def parse_test_return_values_bin (file_location : Path , test_files : TestFiles , test_config : TestConfig ) -> TestResults :
@@ -259,6 +259,10 @@ def parse_test_xml(
259259 message = testcase .result [0 ].message .lower ()
260260 if "timed out" in message :
261261 timed_out = True
262+
263+ stdout = run_result .stdout if run_result and run_result .stdout else None
264+ stderr = run_result .stderr if run_result and run_result .stderr else None
265+
262266 matches = re .findall (r"!######(.*?):(.*?)([^\.:]*?):(.*?):(.*?):(.*?)######!" , testcase .system_out or "" )
263267 if not matches or not len (matches ):
264268 test_results .add (
@@ -278,9 +282,10 @@ def parse_test_xml(
278282 test_type = test_type ,
279283 return_value = None ,
280284 timed_out = timed_out ,
285+ stdout = stdout ,
286+ stderr = stderr ,
281287 )
282288 )
283-
284289 else :
285290 for match in matches :
286291 split_val = match [5 ].split (":" )
@@ -306,21 +311,17 @@ def parse_test_xml(
306311 test_type = test_type ,
307312 return_value = None ,
308313 timed_out = timed_out ,
314+ stdout = stdout ,
315+ stderr = stderr ,
309316 )
310317 )
311318
312319 if not test_results :
313320 logger .info (
314321 f"Tests '{ [test_file .original_file_path for test_file in test_files .test_files ]} ' failed to run, skipping"
315322 )
316- if run_result is not None :
317- stdout , stderr = "" , ""
318- try :
319- stdout = run_result .stdout .decode ()
320- stderr = run_result .stderr .decode ()
321- except AttributeError :
322- stdout = run_result .stderr
323- logger .debug (f"Test log - STDOUT : { stdout } \n STDERR : { stderr } " )
323+ stdout , stderr = run_result .stdout , run_result .stderr
324+ logger .debug (f"Test log - STDOUT : { stdout } \n STDERR : { stderr } " )
324325 return test_results
325326
326327
@@ -335,7 +336,11 @@ def merge_test_results(
335336 # This is done to match the right iteration_id which might not be available in the xml
336337 for result in xml_test_results :
337338 if test_framework == "pytest" :
338- if result .id .test_function_name .endswith ("]" ) and "[" in result .id .test_function_name : # parameterized test
339+ if (
340+ result .id .test_function_name
341+ and result .id .test_function_name .endswith ("]" )
342+ and "[" in result .id .test_function_name
343+ ): # parameterized test
339344 test_function_name = result .id .test_function_name [: result .id .test_function_name .index ("[" )]
340345 else :
341346 test_function_name = result .id .test_function_name
0 commit comments