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])