Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions augur/tasks/github/events.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:

Expand All @@ -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

Expand Down Expand Up @@ -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:
Expand Down
46 changes: 46 additions & 0 deletions tests/test_tasks/test_github_tasks/test_events.py
Original file line number Diff line number Diff line change
@@ -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]