From f112d5f83b12041c4ea2307922c3dedda4d73b67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vojt=C4=9Bch=20Michal?= Date: Mon, 8 Dec 2025 00:25:46 +0100 Subject: [PATCH 1/5] More strict regex for lines in expected_results.txt files, report readable message on incorrect format. --- tests/utils/stl/test/file_parsing.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tests/utils/stl/test/file_parsing.py b/tests/utils/stl/test/file_parsing.py index 84c3b70f1ad..d6e742c7f13 100644 --- a/tests/utils/stl/test/file_parsing.py +++ b/tests/utils/stl/test/file_parsing.py @@ -58,7 +58,7 @@ class _ParseCtx: _TAGS_REGEX = re.compile(r'^(?P(\*|\w+(,\w+)*))\t+(?P.*)$') _ENV_VAR_MULTI_ITEM_REGEX = re.compile(r'(?P\w+)="(?P.*?)"') _CROSSLIST_REGEX = re.compile(r'^RUNALL_CROSSLIST$') -_EXPECTED_RESULT_REGEX = re.compile(r'^(?P.*) (?P.*?)$') +_EXPECTED_RESULT_REGEX = re.compile(r'^(?P[^ ]*) (?P.*?)$') def _parse_env_line(line: str) -> Optional[_TmpEnvEntry]: @@ -138,11 +138,15 @@ def parse_result_file(filename: Union[str, bytes, os.PathLike]) \ res = dict() for line in parse_commented_file(filename): m = _EXPECTED_RESULT_REGEX.match(line) + if m is None: + raise Exception(f"Line \"{line}\" has incorrect format in {filename}.") prefix = m.group("prefix") result = m.group("result") result_code = getattr(lit.Test, result, None) if result_code is None: - result_code = getattr(stl.test.tests, result) + result_code = getattr(stl.test.tests, result, None) + if result_code is None: + raise Exception(f"Incorrect result code \"{result}\" in \"{line}\" in {filename}.") res[prefix] = result_code _expected_result_entry_cache[str(filename)] = res From affcd922ecc3c1734d36835f23c86bd91b4b8769 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vojt=C4=9Bch=20Michal?= Date: Mon, 8 Dec 2025 00:31:30 +0100 Subject: [PATCH 2/5] Minor rewording of errors. --- tests/utils/stl/test/file_parsing.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/utils/stl/test/file_parsing.py b/tests/utils/stl/test/file_parsing.py index d6e742c7f13..00961cd87e8 100644 --- a/tests/utils/stl/test/file_parsing.py +++ b/tests/utils/stl/test/file_parsing.py @@ -146,7 +146,7 @@ def parse_result_file(filename: Union[str, bytes, os.PathLike]) \ if result_code is None: result_code = getattr(stl.test.tests, result, None) if result_code is None: - raise Exception(f"Incorrect result code \"{result}\" in \"{line}\" in {filename}.") + raise Exception(f"Unknown result code \"{result}\" in \"{line}\" in {filename}.") res[prefix] = result_code _expected_result_entry_cache[str(filename)] = res From eb8afe826b057b335dd989d6c6c0230373fb8810 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Wed, 10 Dec 2025 12:16:57 -0800 Subject: [PATCH 3/5] Make `_EXPECTED_RESULT_REGEX` even stricter. --- tests/utils/stl/test/file_parsing.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/utils/stl/test/file_parsing.py b/tests/utils/stl/test/file_parsing.py index 00961cd87e8..6e90b5665bd 100644 --- a/tests/utils/stl/test/file_parsing.py +++ b/tests/utils/stl/test/file_parsing.py @@ -58,7 +58,7 @@ class _ParseCtx: _TAGS_REGEX = re.compile(r'^(?P(\*|\w+(,\w+)*))\t+(?P.*)$') _ENV_VAR_MULTI_ITEM_REGEX = re.compile(r'(?P\w+)="(?P.*?)"') _CROSSLIST_REGEX = re.compile(r'^RUNALL_CROSSLIST$') -_EXPECTED_RESULT_REGEX = re.compile(r'^(?P[^ ]*) (?P.*?)$') +_EXPECTED_RESULT_REGEX = re.compile(r'^(?P[^ ]+) (?P\w+)$') def _parse_env_line(line: str) -> Optional[_TmpEnvEntry]: From 226ff81856dcae96698aca6468178430fa0777e6 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Wed, 10 Dec 2025 12:21:20 -0800 Subject: [PATCH 4/5] Use single quotes to avoid escaping double quotes. --- tests/utils/stl/test/file_parsing.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/utils/stl/test/file_parsing.py b/tests/utils/stl/test/file_parsing.py index 6e90b5665bd..8792e416f79 100644 --- a/tests/utils/stl/test/file_parsing.py +++ b/tests/utils/stl/test/file_parsing.py @@ -139,14 +139,14 @@ def parse_result_file(filename: Union[str, bytes, os.PathLike]) \ for line in parse_commented_file(filename): m = _EXPECTED_RESULT_REGEX.match(line) if m is None: - raise Exception(f"Line \"{line}\" has incorrect format in {filename}.") + raise Exception(f'Line "{line}" has incorrect format in {filename}.') prefix = m.group("prefix") result = m.group("result") result_code = getattr(lit.Test, result, None) if result_code is None: result_code = getattr(stl.test.tests, result, None) if result_code is None: - raise Exception(f"Unknown result code \"{result}\" in \"{line}\" in {filename}.") + raise Exception(f'Unknown result code "{result}" in "{line}" in {filename}.') res[prefix] = result_code _expected_result_entry_cache[str(filename)] = res From f8747064e03b921d124f532257df24fe978b0b83 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Wed, 10 Dec 2025 12:31:44 -0800 Subject: [PATCH 5/5] Improve message wording. --- tests/utils/stl/test/file_parsing.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/utils/stl/test/file_parsing.py b/tests/utils/stl/test/file_parsing.py index 8792e416f79..f1d345cb195 100644 --- a/tests/utils/stl/test/file_parsing.py +++ b/tests/utils/stl/test/file_parsing.py @@ -139,14 +139,14 @@ def parse_result_file(filename: Union[str, bytes, os.PathLike]) \ for line in parse_commented_file(filename): m = _EXPECTED_RESULT_REGEX.match(line) if m is None: - raise Exception(f'Line "{line}" has incorrect format in {filename}.') + raise Exception(f'Incorrectly formatted line "{line}" in {filename}.') prefix = m.group("prefix") result = m.group("result") result_code = getattr(lit.Test, result, None) if result_code is None: result_code = getattr(stl.test.tests, result, None) if result_code is None: - raise Exception(f'Unknown result code "{result}" in "{line}" in {filename}.') + raise Exception(f'Unknown result code "{result}" in line "{line}" in {filename}.') res[prefix] = result_code _expected_result_entry_cache[str(filename)] = res