mtest: prevent parse error with gtest protocol

Replace illegal characters when reading gtest generated xml file,
to prevent a ParseError and a stacktrace.

catch et.ParseError, just in case, to prevent stopping other tests
if the xml file was malformed.
This commit is contained in:
Charles Brunet 2023-04-20 08:46:10 -04:00 committed by Eli Schwartz
parent 523204f1f1
commit 70e2da0773
1 changed files with 5 additions and 1 deletions

View File

@ -1035,12 +1035,16 @@ class TestRunGTest(TestRunExitCode):
filename = os.path.join(self.test.workdir, filename)
try:
self.junit = et.parse(filename)
with open(filename, 'r', encoding='utf8', errors='replace') as f:
self.junit = et.parse(f)
except FileNotFoundError:
# This can happen if the test fails to run or complete for some
# reason, like the rpath for libgtest isn't properly set. ExitCode
# will handle the failure, don't generate a stacktrace.
pass
except et.ParseError as e:
# ExitCode will handle the failure, don't generate a stacktrace.
mlog.error(f'Unable to parse {filename}: {e!s}')
super().complete()