[CHG] runbot_merge: treat github reviews as regular comments

Treating them specially turns out to be inconvenient: it becomes
harder/riskier to ask for informal reviews (for which GH reviews are
useful).
This commit is contained in:
Xavier Morel 2018-09-25 14:05:41 +02:00
parent 7fc7b78a04
commit 6df9a68af2
2 changed files with 23 additions and 13 deletions

View File

@ -235,28 +235,27 @@ def handle_comment(env, event):
return pr._parse_commands(partner, comment)
def handle_review(env, event):
partner = env['res.partner'].search([('github_login', '=', event['review']['user']['login'])])
repo = event['repository']['full_name']
comment = event['review']['body'] or ''
author = event['review']['user']['login']
partner = env['res.partner'].search([('github_login', '=', author)])
if not partner:
_logger.info('ignoring comment from %s: not in system', event['review']['user']['login'])
_logger.info('ignoring comment from %s: not in system', author)
return 'ignored'
repository = env['runbot_merge.repository'].search([('name', '=', repo)])
if not repository.project_id._find_commands(comment):
return "No commands, ignoring"
pr = env['runbot_merge.pull_requests']._get_or_schedule(
event['repository']['full_name'],
event['pull_request']['number'],
repo, event['pull_request']['number'],
event['pull_request']['base']['ref']
)
if not pr:
return "Unknown PR, scheduling fetch"
firstline = ''
state = event['review']['state'].lower()
if state == 'approved':
firstline = pr.repository.project_id.github_prefix + ' r+'
elif state == 'request_changes':
firstline = pr.repository.project_id.github_prefix + ' r-'
body = event['review']['body']
return pr._parse_commands(partner, firstline + (('\n' + body) if body else ''))
return pr._parse_commands(partner, comment)
def handle_ping(env, event):
print("Got ping! {}".format(event['zen']))

View File

@ -1675,6 +1675,8 @@ class TestReviewing(object):
]).state == 'ready'
def test_actual_review(self, env, repo):
""" treat github reviews as regular comments
"""
m = repo.make_commit(None, 'initial', None, tree={'m': 'm'})
m2 = repo.make_commit(m, 'second', None, tree={'m': 'm', 'm2': 'm2'})
repo.make_ref('heads/master', m2)
@ -1692,6 +1694,15 @@ class TestReviewing(object):
prx.post_review('APPROVE', 'reviewer', "hansen priority=2")
assert pr.priority == 2
assert pr.state == 'opened'
prx.post_review('REQUEST_CHANGES', 'reviewer', 'hansen priority=1')
assert pr.priority == 1
assert pr.state == 'opened'
prx.post_review('COMMENT', 'reviewer', 'hansen r+')
assert pr.priority == 1
assert pr.state == 'approved'
class TestUnknownPR: