Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[webkitscmpy] Only respect the latest review #20

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
18 changes: 18 additions & 0 deletions Tools/ChangeLog
@@ -1,3 +1,21 @@
2021-11-01 Jonathan Bedard <jbedard@apple.com>

[webkitscmpy] Only respect the latest review
https://bugs.webkit.org/show_bug.cgi?id=231987
<rdar://problem/84434991>

Reviewed by Dewei Zhu.

GitHub will report the entire history of a review, we should only
respect the latest review state.

* Scripts/libraries/webkitscmpy/setup.py: Bump version.
* Scripts/libraries/webkitscmpy/webkitscmpy/__init__.py: Ditto.
* Scripts/libraries/webkitscmpy/webkitscmpy/remote/git_hub.py:
(GitHub.PRGenerator.reviewers):
* Scripts/libraries/webkitscmpy/webkitscmpy/test/pull_request_unittest.py:
(TestNetworkPullRequestGitHub.test_approved_edits):

2021-11-01 Sam Sneddon <gsnedders@apple.com>

Improve LayoutTestFinder test coverage
Expand Down
2 changes: 1 addition & 1 deletion Tools/Scripts/libraries/webkitscmpy/setup.py
Expand Up @@ -29,7 +29,7 @@ def readme():

setup(
name='webkitscmpy',
version='2.2.21',
version='2.2.22',
description='Library designed to interact with git and svn repositories.',
long_description=readme(),
classifiers=[
Expand Down
Expand Up @@ -46,7 +46,7 @@ def _maybe_add_webkitcorepy_path():
"Please install webkitcorepy with `pip install webkitcorepy --extra-index-url <package index URL>`"
)

version = Version(2, 2, 21)
version = Version(2, 2, 22)

AutoInstall.register(Package('fasteners', Version(0, 15, 0)))
AutoInstall.register(Package('jinja2', Version(2, 11, 3)))
Expand Down
Expand Up @@ -206,13 +206,17 @@ def reviewers(self, pull_request):
pull_request._reviewers = [self._contributor(user['login']) for user in response.get('users', [])]
pull_request._approvers = []
pull_request._blockers = []
needs_status = Contributor.REVIEWER in self.repository.contributors.statuses

state_for = {}
for review in self.repository.request('pulls/{}/reviews'.format(pull_request.number)):
contributor = self._contributor(review['user']['login'])
state_for[self._contributor(review['user']['login'])] = review.get('state')
dewei-zhu marked this conversation as resolved.
Show resolved Hide resolved

needs_status = Contributor.REVIEWER in self.repository.contributors.statuses
for contributor, status in state_for.items():
pull_request._reviewers.append(contributor)
if review.get('state') == 'APPROVED' and (not needs_status or contributor.status == Contributor.REVIEWER):
if status == 'APPROVED' and (not needs_status or contributor.status == Contributor.REVIEWER):
pull_request._approvers.append(contributor)
elif review.get('state') == 'CHANGES_REQUESTED':
elif status == 'CHANGES_REQUESTED':
dewei-zhu marked this conversation as resolved.
Show resolved Hide resolved
pull_request._blockers.append(contributor)

pull_request._reviewers = sorted(pull_request._reviewers)
Expand Down
Expand Up @@ -507,6 +507,15 @@ def test_reviewers(self):
self.assertEqual(pr.approvers, [Contributor('Eager Reviewer', ['ereviewer@webkit.org'])])
self.assertEqual(pr.blockers, [Contributor('Suspicious Reviewer', ['sreviewer@webkit.org'])])

def test_approved_edits(self):
with self.webserver() as server:
server.pull_requests[0]['reviews'].append(dict(user=dict(login='sreviewer'), state='APPROVED'))
pr = remote.GitHub(self.remote).pull_requests.get(1)
self.assertEqual(sorted(pr.approvers), sorted([
Contributor('Eager Reviewer', ['ereviewer@webkit.org']),
Contributor('Suspicious Reviewer', ['sreviewer@webkit.org']),
]))

def test_approvers_status(self):
with self.webserver():
repo = remote.GitHub(self.remote)
Expand Down