mirror of
https://github.com/odoo/runbot.git
synced 2025-03-27 13:25:47 +07:00
[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:
parent
7fc7b78a04
commit
6df9a68af2
@ -235,28 +235,27 @@ def handle_comment(env, event):
|
|||||||
return pr._parse_commands(partner, comment)
|
return pr._parse_commands(partner, comment)
|
||||||
|
|
||||||
def handle_review(env, event):
|
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:
|
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'
|
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(
|
pr = env['runbot_merge.pull_requests']._get_or_schedule(
|
||||||
event['repository']['full_name'],
|
repo, event['pull_request']['number'],
|
||||||
event['pull_request']['number'],
|
|
||||||
event['pull_request']['base']['ref']
|
event['pull_request']['base']['ref']
|
||||||
)
|
)
|
||||||
if not pr:
|
if not pr:
|
||||||
return "Unknown PR, scheduling fetch"
|
return "Unknown PR, scheduling fetch"
|
||||||
|
|
||||||
firstline = ''
|
return pr._parse_commands(partner, comment)
|
||||||
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 ''))
|
|
||||||
|
|
||||||
def handle_ping(env, event):
|
def handle_ping(env, event):
|
||||||
print("Got ping! {}".format(event['zen']))
|
print("Got ping! {}".format(event['zen']))
|
||||||
|
@ -1675,6 +1675,8 @@ class TestReviewing(object):
|
|||||||
]).state == 'ready'
|
]).state == 'ready'
|
||||||
|
|
||||||
def test_actual_review(self, env, repo):
|
def test_actual_review(self, env, repo):
|
||||||
|
""" treat github reviews as regular comments
|
||||||
|
"""
|
||||||
m = repo.make_commit(None, 'initial', None, tree={'m': 'm'})
|
m = repo.make_commit(None, 'initial', None, tree={'m': 'm'})
|
||||||
m2 = repo.make_commit(m, 'second', None, tree={'m': 'm', 'm2': 'm2'})
|
m2 = repo.make_commit(m, 'second', None, tree={'m': 'm', 'm2': 'm2'})
|
||||||
repo.make_ref('heads/master', m2)
|
repo.make_ref('heads/master', m2)
|
||||||
@ -1692,6 +1694,15 @@ class TestReviewing(object):
|
|||||||
|
|
||||||
prx.post_review('APPROVE', 'reviewer', "hansen priority=2")
|
prx.post_review('APPROVE', 'reviewer', "hansen priority=2")
|
||||||
assert pr.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'
|
assert pr.state == 'approved'
|
||||||
|
|
||||||
class TestUnknownPR:
|
class TestUnknownPR:
|
||||||
|
Loading…
Reference in New Issue
Block a user