From 70e2da07737c6ed474ab5990ac32c3d4f7e88bd2 Mon Sep 17 00:00:00 2001 From: Charles Brunet Date: Thu, 20 Apr 2023 08:46:10 -0400 Subject: 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. --- mesonbuild/mtest.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/mesonbuild/mtest.py b/mesonbuild/mtest.py index f7cf77070..cbf1c193d 100644 --- a/mesonbuild/mtest.py +++ b/mesonbuild/mtest.py @@ -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() -- cgit v1.2.1