From acc908ada1c66019d98a99c6c87cb09421fd913c Mon Sep 17 00:00:00 2001 From: Noaman-Akhtar Date: Thu, 2 Apr 2026 03:24:35 +0530 Subject: [PATCH] Fix false PR event warnings for issue number collisions --- augur/tasks/github/events.py | 14 ++++++ .../test_github_tasks/test_events.py | 46 +++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 tests/test_tasks/test_github_tasks/test_events.py diff --git a/augur/tasks/github/events.py b/augur/tasks/github/events.py index a2a8736c8a..8b3e9f3b32 100644 --- a/augur/tasks/github/events.py +++ b/augur/tasks/github/events.py @@ -209,6 +209,7 @@ def _process_pr_events(self, pr_events, repo_id): contributors = [] pr_url_to_id_map = self._get_map_from_pr_url_to_id(repo_id) + issue_numbers = self._get_issue_numbers_by_repo_id(repo_id) for event in pr_events: @@ -220,6 +221,10 @@ def _process_pr_events(self, pr_events, repo_id): pull_request_id = pr_url_to_id_map[pr_url] except KeyError: + pr_number = int(pr_url.rstrip("/").split("/")[-1]) + if pr_number in issue_numbers: + continue + self._logger.warning(f"{self.repo_identifier} - {self.task_name}: Could not find related pr. We were searching for: {pr_url}") continue @@ -255,6 +260,15 @@ def _get_map_from_issue_url_to_id(self, repo_id): return issue_url_to_id_map + def _get_issue_numbers_by_repo_id(self, repo_id): + + issue_numbers = set() + issues = get_issues_by_repo_id(repo_id) + for issue in issues: + issue_numbers.add(issue.gh_issue_number) + + return issue_numbers + def _is_pr_event(self, event): if event["issue"] is None: diff --git a/tests/test_tasks/test_github_tasks/test_events.py b/tests/test_tasks/test_github_tasks/test_events.py new file mode 100644 index 0000000000..9973162d3d --- /dev/null +++ b/tests/test_tasks/test_github_tasks/test_events.py @@ -0,0 +1,46 @@ +from unittest.mock import MagicMock + +from augur.tasks.github.events import BulkGithubEventCollection + + +def _make_pr_event(pr_number): + return { + "issue": { + "id": 1, + "pull_request": { + "url": f"https://api.github.com/repos/owner/repo/pulls/{pr_number}" + }, + }, + "actor": None, + } + + +def test_process_pr_events_skips_warning_for_existing_issue_number(): + logger = MagicMock() + collector = BulkGithubEventCollection(logger) + collector.repo_identifier = "owner/repo" + collector.task_name = "Bulk Github Event task" + collector._get_map_from_pr_url_to_id = MagicMock(return_value={}) + collector._get_issue_numbers_by_repo_id = MagicMock(return_value={3383}) + collector._insert_contributors = MagicMock() + collector._insert_pr_events = MagicMock() + + collector._process_pr_events([_make_pr_event(3383)], repo_id=1) + + logger.warning.assert_not_called() + + +def test_process_pr_events_warns_for_missing_pr_number(): + logger = MagicMock() + collector = BulkGithubEventCollection(logger) + collector.repo_identifier = "owner/repo" + collector.task_name = "Bulk Github Event task" + collector._get_map_from_pr_url_to_id = MagicMock(return_value={}) + collector._get_issue_numbers_by_repo_id = MagicMock(return_value=set()) + collector._insert_contributors = MagicMock() + collector._insert_pr_events = MagicMock() + + collector._process_pr_events([_make_pr_event(9999)], repo_id=1) + + logger.warning.assert_called_once() + assert "Could not find related pr" in logger.warning.call_args.args[0] \ No newline at end of file