From 14bbb1e00f5494b44e9cddc5be7e6ac082a5d701 Mon Sep 17 00:00:00 2001 From: MrMha <114929652+MrMha@users.noreply.github.com> Date: Sun, 11 Oct 2026 18:21:44 +0400 Subject: [PATCH] fix(pr-overlap): bound explicit dependency declarations --- tools/pr_overlap.py | 2 +- tools/tests/test_pr_overlap_dependencies.py | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/tools/pr_overlap.py b/tools/pr_overlap.py index e84ee058d..279006dba 100644 --- a/tools/pr_overlap.py +++ b/tools/pr_overlap.py @@ -9,7 +9,7 @@ from urllib.parse import urlencode PARENT = 'if .parent then "\\(.parent.owner.login)/\\(.parent.name)" else .nameWithOwner end' EXPORT = re.compile(r"^\+.*\bAPS5_VABI\s+(\w+)\s*\(") -DEPENDS = re.compile(r'Depends on:([^\r\n]*(?:\r?\n[ \t]*[-*][ \t]*#\d+[^\r\n]*)*)') +DEPENDS = re.compile(r'Depends on:[ \t]*((?:#\d+\b(?:(?:[ \t]*,[ \t]*(?:and[ \t]+)?|[ \t]+and[ \t]+)#\d+\b)*|none\b)?(?:\r?\n[ \t]*[-*][ \t]*#\d+\b[^\r\n]*)*)') PLAIN_DEPENDS = re.compile(r'Depends on[ \t]+(#\d+\b(?:(?:[ \t]*,[ \t]*(?:and[ \t]+)?|[ \t]+and[ \t]+)#\d+\b)*)') HUNK = re.compile(r"^@@ -(\d+)(?:,(\d+))?", re.M) MARKER = "" diff --git a/tools/tests/test_pr_overlap_dependencies.py b/tools/tests/test_pr_overlap_dependencies.py index 1ce38ff84..f93bb828c 100644 --- a/tools/tests/test_pr_overlap_dependencies.py +++ b/tools/tests/test_pr_overlap_dependencies.py @@ -54,6 +54,15 @@ class DependencyTests(unittest.TestCase): with self.subTest(body=body): self.assertEqual(pull_requests(body)[1]["depends"], {2}) + def test_colon_declaration_stops_before_unrelated_prose(self): + for body in ("Depends on: #2. Related #3 covers something else.", + "Depends on: #2; related #3 covers something else.", + "Depends on: none; see issue #3.", + "Depends on: #2, related work is in #3."): + with self.subTest(body=body): + expected = set() if "none" in body else {2} + self.assertEqual(pull_requests(body)[1]["depends"], expected) + def test_checklist_declaration_keeps_precedence(self): for declaration, expected in (("#3", {3}), ("none", set())): body = "Previously: Depends on #2.\n\n- [x] Depends on: " + declaration