Skip to content
This repository was archived by the owner on Mar 14, 2023. It is now read-only.

Commit 601816f

Browse files
Merge pull request #376 from Mark-Simulacrum/log-better
Improving messages sent on reply to webhooks
2 parents 6210ed5 + 56e1480 commit 601816f

File tree

2 files changed

+20
-17
lines changed

2 files changed

+20
-17
lines changed

highfive/newpr.py

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,11 @@
3333
review_with_reviewer = 'r? @%s\n\n(rust-highfive has picked a reviewer for you, use r? to override)'
3434
review_without_reviewer = '@%s: no appropriate reviewer found, use r? to override'
3535

36-
reviewer_re = re.compile("\\b[rR]\?[:\- ]*@([a-zA-Z0-9\-]+)")
37-
reviewer_group_re = re.compile("\\b[rR]\?[:\- ]*@?(?:([a-zA-Z0-9\-]+)/)([a-zA-Z0-9\-]+)")
38-
submodule_re = re.compile(".*\+Subproject\scommit\s.*", re.DOTALL | re.MULTILINE)
36+
reviewer_re = re.compile(r"\b[rR]\?[:\- ]*@([a-zA-Z0-9\-]+)")
37+
reviewer_group_re = re.compile(r"\b[rR]\?[:\- ]*@?(?:([a-zA-Z0-9\-]+)/)([a-zA-Z0-9\-]+)")
38+
submodule_re = re.compile(r".*\+Subproject\scommit\s.*", re.DOTALL | re.MULTILINE)
3939
target_re = re.compile("^[+-]{3} [ab]/compiler/rustc_target/src/spec/", re.MULTILINE)
4040

41-
rustaceans_api_url = "http://www.ncameron.org/rustaceans/user?username={username}"
42-
43-
4441
class UnsupportedRepoError(IOError):
4542
pass
4643

@@ -68,10 +65,13 @@ def run(self, event):
6865
return "Ping received! The webhook is configured correctly!\n"
6966
elif event == "pull_request" and self.payload["action"] == "opened":
7067
self.new_pr()
71-
return 'OK\n'
68+
return 'OK, handled new PR\n'
7269
elif event == "issue_comment" and self.payload["action"] == "created":
73-
self.new_comment()
74-
return 'OK\n'
70+
msg = self.new_comment()
71+
if msg is None:
72+
return 'OK\n'
73+
else:
74+
return f"OK: {msg}\n"
7575
else:
7676
return 'Unsupported webhook event.\n'
7777

@@ -433,12 +433,12 @@ def new_comment(self):
433433
# Check the issue is a PR and is open.
434434
if self.payload['issue', 'state'] != 'open' \
435435
or 'pull_request' not in self.payload['issue']:
436-
return
436+
return "skipped - closed issue"
437437

438438
commenter = self.payload['comment', 'user', 'login']
439439
# Ignore our own comments.
440440
if commenter == self.integration_user:
441-
return
441+
return "skipped - our own comment"
442442

443443
owner = self.payload['repository', 'owner', 'login']
444444
repo = self.payload['repository', 'name']
@@ -451,7 +451,7 @@ def new_comment(self):
451451
)):
452452
# Check if commenter is a collaborator.
453453
if not self.is_collaborator(commenter, owner, repo):
454-
return
454+
return "skipped, comment not by author, collaborator, or assignee"
455455

456456
# Check for r? and set the assignee.
457457
msg = self.payload['comment', 'body']
@@ -462,3 +462,6 @@ def new_comment(self):
462462
reviewer, owner, repo, issue, self.integration_user,
463463
author, None
464464
)
465+
return f"set assignee to {reviewer}"
466+
else:
467+
return "no reviewer found"

highfive/tests/test_newpr.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -980,7 +980,7 @@ def make_handler(
980980
def test_not_open(self):
981981
handler = self.make_handler(state='closed')
982982

983-
assert handler.new_comment() is None
983+
assert handler.new_comment() == 'skipped - closed issue'
984984
self.mocks['is_collaborator'].assert_not_called()
985985
self.mocks['find_reviewer'].assert_not_called()
986986
self.mocks['set_assignee'].assert_not_called()
@@ -996,7 +996,7 @@ def test_not_pr(self):
996996
def test_commenter_is_integration_user(self):
997997
handler = self.make_handler(commenter='integrationUser')
998998

999-
assert handler.new_comment() is None
999+
assert handler.new_comment() == 'skipped - our own comment'
10001000
self.mocks['is_collaborator'].assert_not_called()
10011001
self.mocks['find_reviewer'].assert_not_called()
10021002
self.mocks['set_assignee'].assert_not_called()
@@ -1007,7 +1007,7 @@ def test_unauthorized_assigner(self):
10071007
)
10081008

10091009
self.mocks['is_collaborator'].return_value = False
1010-
assert handler.new_comment() is None
1010+
assert handler.new_comment() == 'skipped, comment not by author, collaborator, or assignee'
10111011
self.mocks['is_collaborator'].assert_called_with(
10121012
'userB', 'repo-owner', 'repo-name'
10131013
)
@@ -1315,14 +1315,14 @@ def handler_mock(self, payload):
13151315
def test_newpr(self):
13161316
payload = Payload({'action': 'opened'})
13171317
m = self.handler_mock(payload)
1318-
assert m.handler.run('pull_request') == 'OK\n'
1318+
assert m.handler.run('pull_request') == 'OK, handled new PR\n'
13191319
self.mocks['new_pr'].assert_called_once_with()
13201320
self.mocks['new_comment'].assert_not_called()
13211321

13221322
def test_new_comment(self):
13231323
payload = Payload({'action': 'created'})
13241324
m = self.handler_mock(payload)
1325-
assert m.handler.run('issue_comment') == 'OK\n'
1325+
assert m.handler.run('issue_comment').startswith('OK')
13261326
self.mocks['new_pr'].assert_not_called()
13271327
self.mocks['new_comment'].assert_called_once_with()
13281328

0 commit comments

Comments
 (0)