[CHG] forwardport: automatically delegate original PR author on FP PRs

This way the original author can r+ the forward ports if they succeed
(and probably requires no attention).

Closes #195
This commit is contained in:
Xavier Morel 2019-09-17 14:43:21 +02:00
parent 73f27873a3
commit ee8f81be2a
2 changed files with 15 additions and 9 deletions

View File

@ -443,10 +443,16 @@ class PullRequests(models.Model):
# only link to previous PR of sequence if cherrypick passed
'parent_id': pr.id if not has_conflicts else False,
})
# delegate original author on merged original PR & on new PR so
# they can r+ the forward ports (via mergebot or forwardbot)
source.author.write({
'delegate_reviewer': [
(4, source.id, False),
(4, new_pr.id, False),
]
})
assignees = (new_pr.source_id.author | new_pr.source_id.reviewed_by) \
.filtered(lambda p: new_pr.source_id._pr_acl(p).is_reviewer) \
.mapped('github_login')
assignees = (source.author | source.reviewed_by).mapped('github_login')
ping = "Ping %s" % ', '.join('@' + login for login in assignees if login)
if h:
sout = serr = ''

View File

@ -191,14 +191,14 @@ def test_straightforward_flow(env, config, make_repo, users):
}
assert prod.get_pr(pr2.number).comments == [
(users['user'], """\
Ping @%s
Ping @%s, @%s
This PR targets c and is the last of the forward-port chain.
To merge the full chain, say
> @%s r+
More info at https://github.com/odoo/odoo/wiki/Mergebot#forward-port
""" % (users['reviewer'], project.fp_github_name)),
""" % (users['other'], users['reviewer'], project.fp_github_name)),
]
with prod:
prod.post_status(pr2.head, 'success', 'ci/runbot')
@ -822,21 +822,21 @@ def test_default_disabled(env, config, make_repo, users):
assert len(cs) == 1
assert pr2.comments == [
(users['user'], """\
Ping @%s
Ping @%s, @%s
This PR targets b and is the last of the forward-port chain.
To merge the full chain, say
> @%s r+
More info at https://github.com/odoo/odoo/wiki/Mergebot#forward-port
""" % (users['reviewer'], users['user'])),
""" % (users['user'], users['reviewer'], users['user'])),
]
# reviewer = of the FP sequence, the original PR is always reviewed by `user`
# set as reviewer
Case = collections.namedtuple('Case', 'author reviewer delegate success')
ACL = [
Case('reviewer', 'reviewer', None, False),
Case('reviewer', 'reviewer', None, True),
Case('reviewer', 'self_reviewer', None, False),
Case('reviewer', 'other', None, False),
Case('reviewer', 'other', 'other', True),
@ -848,7 +848,7 @@ ACL = [
Case('other', 'reviewer', None, True),
Case('other', 'self_reviewer', None, False),
Case('other', 'other', None, False),
Case('other', 'other', None, True),
Case('other', 'other', 'other', True),
]
@pytest.mark.parametrize(Case._fields, ACL)