Skip to content

Commit b71220e

Browse files
committed
Approve pull request with no issue
1 parent c488f11 commit b71220e

2 files changed

Lines changed: 38 additions & 6 deletions

File tree

bot/code_review_bot/report/github.py

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import structlog
66

77
from code_review_bot.report.base import Reporter
8-
from code_review_bot.sources.github import GithubClient
8+
from code_review_bot.sources.github import GithubClient, ReviewEvent
99

1010
logger = structlog.get_logger(__name__)
1111

@@ -43,9 +43,22 @@ def publish(self, issues, revision, task_failures, notices, reviewers):
4343
logger.info("No publishable issue, nothing to do")
4444
return
4545

46-
message = f"{len(issues)} issues have been found in this revision"
46+
if publishable_issues:
47+
# Publish a review summarizing detected, unresolved and closed issues
48+
message = f"{len(issues)} issues have been found in this revision"
49+
event = ReviewEvent.RequestChanges
50+
else:
51+
# Simply approve the pull request
52+
self.github_client.publish_review(
53+
issues=issues,
54+
revision=revision,
55+
message=message,
56+
event=ReviewEvent.RequestChanges,
57+
)
4758

48-
# Publish a review summarizing detected, unresolved and closed issues
4959
self.github_client.publish_review(
50-
issues=issues, revision=revision, message=message
60+
issues=issues,
61+
revision=revision,
62+
message=message,
63+
event=event,
5164
)

bot/code_review_bot/sources/github.py

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,27 @@
44
# License, v. 2.0. If a copy of the MPL was not distributed with this
55
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
66

7+
import enum
8+
79
from github import Auth, GithubIntegration
810
from github.PullRequest import ReviewComment
911

1012
from code_review_bot import Issue
1113
from code_review_bot.revisions import GithubRevision
1214

1315

16+
class ReviewEvent(enum.Enum):
17+
"""
18+
Review action you want to perform.
19+
https://docs.github.com/en/rest/pulls/reviews?apiVersion=2022-11-28#create-a-review-for-a-pull-request--parameters
20+
"""
21+
22+
Pending = "PENDING"
23+
Approved = "APPROVE"
24+
RequestChanges = "REQUEST_CHANGES"
25+
Comment = "COMMENT"
26+
27+
1428
class GithubClient:
1529
def __init__(self, client_id: str, pem_key_path: str, installation_id: str):
1630
self.client_id = client_id
@@ -42,17 +56,22 @@ def _build_review_comment(self, issue):
4256
)
4357

4458
def publish_review(
45-
self, issues: list[Issue], revision: GithubRevision, message: str
59+
self,
60+
issues: list[Issue],
61+
revision: GithubRevision,
62+
message: str,
63+
event: ReviewEvent,
4664
):
4765
"""
4866
Publish a review from a list of publishable issues, requesting changes to the author.
4967
"""
5068
repo = self.api.get_repo(revision.repo_name)
5169
pull_request = repo.get_pull(revision.pull_number)
70+
5271
pull_request.create_review(
5372
commit=repo.get_commit(revision.pull_head_sha),
5473
body=message,
5574
comments=[self._build_review_comment(issue) for issue in issues],
5675
# https://docs.github.com/en/rest/pulls/reviews?apiVersion=2022-11-28#create-a-review-for-a-pull-request
57-
event="REQUEST_CHANGES",
76+
event=event.value,
5877
)

0 commit comments

Comments
 (0)