From 7993747e139744fe6c8fb0f5cd324627629ec970 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Olivier=20Cr=C3=AAte?= Date: Fri, 4 Jan 2019 08:42:01 -0500 Subject: [PATCH] Save surrogates as-is in log files When python sees an invalid character in a filename for the current locale, instead of clobbering it, it saves is as an invalid codepoint called a surrogate. We need to explicitly instruct the encoder to write those out as-is. In the JSON file, we replace them instead to produce valid json. --- mesonbuild/mtest.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mesonbuild/mtest.py b/mesonbuild/mtest.py index 8ce95383b..b4bd4f233 100644 --- a/mesonbuild/mtest.py +++ b/mesonbuild/mtest.py @@ -647,8 +647,8 @@ Timeout: %4d self.logfilename = logfile_base + '.txt' self.jsonlogfilename = logfile_base + '.json' - self.jsonlogfile = open(self.jsonlogfilename, 'w', encoding='utf-8') - self.logfile = open(self.logfilename, 'w', encoding='utf-8') + self.jsonlogfile = open(self.jsonlogfilename, 'w', encoding='utf-8', errors='replace') + self.logfile = open(self.logfilename, 'w', encoding='utf-8', errors='surrogateescape') self.logfile.write('Log of Meson test suite run on %s\n\n' % datetime.datetime.now().isoformat())