From 3f007a8798266bb7434f1f6940887fb041299ac7 Mon Sep 17 00:00:00 2001 From: xXPBSXx <20614131+xXPBSXx@users.noreply.github.com> Date: Tue, 20 Oct 2026 03:00:15 +0200 Subject: [PATCH] fix(tools): read the select_tests changed-file list as UTF-8 with a byte order mark Co-Authored-By: Claude Sonnet 5.5 --- tools/select_tests.py | 2 +- tools/tests/test_select_tests.py | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/tools/select_tests.py b/tools/select_tests.py index 50c0a56334..580cae7caf 100644 --- a/tools/select_tests.py +++ b/tools/select_tests.py @@ -237,7 +237,7 @@ def main(): print("full run: no test graph") return 0 graph = json.loads(Path(args.graph).read_text(encoding="utf-8")) - changed = [line.strip() for line in Path(args.changed).read_text(encoding="utf-8").splitlines() if line.strip()] + changed = [line.strip() for line in Path(args.changed).read_text(encoding="utf-8-sig").splitlines() if line.strip()] picked, full = select(graph, changed) if picked is None: print(f"full run: {', '.join(full[:5])}") diff --git a/tools/tests/test_select_tests.py b/tools/tests/test_select_tests.py index d739a0c62a..422544f7b7 100644 --- a/tools/tests/test_select_tests.py +++ b/tools/tests/test_select_tests.py @@ -101,6 +101,13 @@ class SelectTests(unittest.TestCase): self.assertIsNone(selected) self.assertIn(changed, output) + def test_changed_list_with_a_byte_order_mark_and_crlf_keeps_its_first_path(self): + listed = self.build / "changed bom.txt" + listed.write_bytes(b"\xef\xbb\xbfCMakeLists.txt\r\nalpha/alpha.h\r\n") + output = self.tool("select", self.build, self.graph, listed) + self.assertIn("CMakeLists.txt", output) + self.assertFalse((self.build / "select.tests").exists()) + def test_missing_graph_runs_everything(self): self.assertIsNone(self.select("alpha/alpha.h", graph=self.build / "missing.json")[1])