From 7bb13e934da1cf2ed8bd7dec552c05b4f430b255 Mon Sep 17 00:00:00 2001 From: Peter Barker Date: Wed, 23 Feb 2022 23:22:07 +1100 Subject: [PATCH] autotest: add support for multi-line log formats --- Tools/autotest/common.py | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/Tools/autotest/common.py b/Tools/autotest/common.py index 8dedff1f95..3183a3e3b1 100644 --- a/Tools/autotest/common.py +++ b/Tools/autotest/common.py @@ -2100,6 +2100,7 @@ class AutoTest(ABC): return ret def all_log_format_ids(self): + '''parse C++ code to extract definitions of log messages''' structure_files = self.find_LogStructureFiles() structure_lines = [] for f in structure_files: @@ -2155,7 +2156,16 @@ class AutoTest(ABC): if linestate == linestate_within: m = re.match("(.*)}", line) if m is None: - raise NotAchievedException("Bad closing line (%s)" % line) + line = line.rstrip() + newline = re.sub(r"\\$", "", line) + if newline == line: + raise NotAchievedException("Expected backslash at end of line") + line = newline + line = line.rstrip() + # cpp-style string concatenation: + line = re.sub(r'"\s*"', '', line) + partial_line += line + continue message_infos.append(partial_line + m.group(1)) linestate = linestate_none continue @@ -2214,7 +2224,16 @@ class AutoTest(ABC): if linestate == linestate_within: m = re.match("(.*)}", line) if m is None: - raise NotAchievedException("Bad closing line (%s)" % line) + line = line.rstrip() + newline = re.sub(r"\\$", "", line) + if newline == line: + raise NotAchievedException("Expected backslash at end of line") + line = newline + line = line.rstrip() + # cpp-style string concatenation: + line = re.sub(r'"\s*"', '', line) + partial_line += line + continue message_infos.append(partial_line + m.group(1)) linestate = linestate_none continue