Skip to content

Commit f845744

Browse files
committed
Parse r+ await
1 parent e23b037 commit f845744

File tree

2 files changed

+80
-2
lines changed

2 files changed

+80
-2
lines changed

homu/parse_issue_comment.py

+20-2
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,13 @@ def approve(cls, approver, commit):
2828
command.actor = approver.lstrip('@')
2929
return command
3030

31+
@classmethod
32+
def approve_await(cls, approver, commit):
33+
command = cls('approve-await')
34+
command.commit = commit
35+
command.actor = approver.lstrip('@')
36+
return command
37+
3138
@classmethod
3239
def unapprove(cls):
3340
return cls('unapprove')
@@ -183,15 +190,26 @@ def parse_issue_comment(username, body, sha, botname, hooks=[]):
183190
if i + 1 < len(words) and is_sha(words[i + 1]):
184191
approved_sha = words[i + 1]
185192
words[i + 1] = None
193+
i += 1
186194

187195
approver = word[len('r='):] if word.startswith('r=') else username
188196

189197
# Ignore "r=me"
190198
if approver == 'me':
191199
continue
192200

193-
commands.append(
194-
IssueCommentCommand.approve(approver, approved_sha))
201+
await_ci = False
202+
if i + 1 < len(words) and words[i + 1] == 'await':
203+
await_ci = True
204+
words[i + 1] = None
205+
i += 1
206+
207+
if await_ci:
208+
commands.append(
209+
IssueCommentCommand.approve_await(approver, approved_sha))
210+
else:
211+
commands.append(
212+
IssueCommentCommand.approve(approver, approved_sha))
195213

196214
elif word == 'r-':
197215
commands.append(IssueCommentCommand.unapprove())

homu/tests/test_parse_issue_comment.py

+60
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,36 @@ def test_r_plus_with_sha():
5252
assert command.actor == 'jack'
5353
assert command.commit == other_commit
5454

55+
def test_r_plus_await():
56+
"""
57+
@bors r+ await
58+
"""
59+
60+
author = "jack"
61+
body = "@bors r+ await"
62+
commands = parse_issue_comment(author, body, commit, "bors")
63+
64+
assert len(commands) == 1
65+
command = commands[0]
66+
assert command.action == 'approve-await'
67+
assert command.actor == 'jack'
68+
69+
70+
def test_r_plus_await_with_sha():
71+
"""
72+
@bors r+ {sha} await
73+
"""
74+
75+
author = "jack"
76+
body = "@bors r+ {} await".format(other_commit)
77+
commands = parse_issue_comment(author, body, commit, "bors")
78+
79+
assert len(commands) == 1
80+
command = commands[0]
81+
assert command.action == 'approve-await'
82+
assert command.actor == 'jack'
83+
assert command.commit == other_commit
84+
5585

5686
def test_r_equals():
5787
"""
@@ -83,6 +113,36 @@ def test_r_equals_at_user():
83113
assert command.actor == 'jill'
84114

85115

116+
def test_r_equals_await():
117+
"""
118+
@bors r=jill await
119+
"""
120+
121+
author = "jack"
122+
body = "@bors r=jill await"
123+
commands = parse_issue_comment(author, body, commit, "bors")
124+
125+
assert len(commands) == 1
126+
command = commands[0]
127+
assert command.action == 'approve-await'
128+
assert command.actor == 'jill'
129+
130+
131+
def test_r_equals_at_user():
132+
"""
133+
@bors r=@jill await
134+
"""
135+
136+
author = "jack"
137+
body = "@bors r=@jill await"
138+
commands = parse_issue_comment(author, body, commit, "bors")
139+
140+
assert len(commands) == 1
141+
command = commands[0]
142+
assert command.action == 'approve-await'
143+
assert command.actor == 'jill'
144+
145+
86146
def test_hidden_r_equals():
87147
author = "bors"
88148
body = """

0 commit comments

Comments
 (0)