From c7aca86c61b3bcb7dcfdc8604330cddfff5edb51 Mon Sep 17 00:00:00 2001 From: MarcZX100 Date: Tue, 13 Oct 2026 06:01:10 +0000 Subject: [PATCH] fix(tools): use the shared merge base for overlap checks --- tools/pr_overlap.py | 2 +- tools/tests/test_pr_overlap.py | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/tools/pr_overlap.py b/tools/pr_overlap.py index f059c7a98..2a5b0d29f 100644 --- a/tools/pr_overlap.py +++ b/tools/pr_overlap.py @@ -139,7 +139,7 @@ def clashes(a, b, path): def conflicts(a, b): if not (a["tree"] and b["tree"] and a["files"] & b["files"]): return {} - files = merge("--merge-base=refs/pr/base", a["tree"], b["tree"])[1] + files = merge(a["tree"], b["tree"])[1] return {path: [] if path in a["added"] else clashes(a, b, path) for path in files} diff --git a/tools/tests/test_pr_overlap.py b/tools/tests/test_pr_overlap.py index 55d0f4319..ed4f4e4b2 100644 --- a/tools/tests/test_pr_overlap.py +++ b/tools/tests/test_pr_overlap.py @@ -108,5 +108,14 @@ class FetchTests(unittest.TestCase): self.assertEqual(git.call_args_list[-1].args[-1], "+00000000000000000000000000000000000000f9:refs/pr/249") +class ConflictTests(unittest.TestCase): + def test_uses_the_shared_base_parent_without_newer_merge_tree_option(self): + first = {"tree": "first-tree", "files": {"shared.cpp"}, "added": set()} + second = {"tree": "second-tree", "files": {"shared.cpp"}, "added": set()} + with patch.object(pr_overlap, "merge", return_value=("merged-tree", set())) as merge: + self.assertEqual(pr_overlap.conflicts(first, second), {}) + merge.assert_called_once_with("first-tree", "second-tree") + + if __name__ == "__main__": unittest.main()