mirror of
https://github.com/odoo/runbot.git
synced 2025-03-27 13:25:47 +07:00
[FIX] forwardport: fix pinging on forwardport PRs
- avoid pinging the author of the fw PR (which is the forward-bot itself) - instead ping the author and reviewer of the source, and possibly the reviewer of the PR if any - might also be a good idea to ping reviewers of intermediate PRs?
This commit is contained in:
parent
5f08100f3a
commit
afe4d13eeb
3
forwardport/changelog/2022-10/notifications.md
Normal file
3
forwardport/changelog/2022-10/notifications.md
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
FIX: stop pinging the forwardbot on forward-port PRs
|
||||||
|
|
||||||
|
Also ping the reviewer of the original PR.
|
@ -1112,6 +1112,22 @@ stderr:
|
|||||||
'token_field': 'fp_github_token',
|
'token_field': 'fp_github_token',
|
||||||
})
|
})
|
||||||
|
|
||||||
|
def ping(self, author=True, reviewer=True):
|
||||||
|
source = self.source_id
|
||||||
|
if not source:
|
||||||
|
return super().ping(author=author, reviewer=reviewer)
|
||||||
|
|
||||||
|
# use a dict literal to maintain ordering (3.6+)
|
||||||
|
pingline = ' '.join(
|
||||||
|
f'@{p.github_login}'
|
||||||
|
for p in filter(None, {
|
||||||
|
author and source.author: None,
|
||||||
|
reviewer and source.reviewed_by: None,
|
||||||
|
reviewer and self.reviewed_by: None,
|
||||||
|
})
|
||||||
|
)
|
||||||
|
return pingline and (pingline + ' ')
|
||||||
|
|
||||||
class Stagings(models.Model):
|
class Stagings(models.Model):
|
||||||
_inherit = 'runbot_merge.stagings'
|
_inherit = 'runbot_merge.stagings'
|
||||||
|
|
||||||
|
@ -71,7 +71,7 @@ def test_straightforward_flow(env, config, make_repo, users):
|
|||||||
# should merge the staging then create the FP PR
|
# should merge the staging then create the FP PR
|
||||||
env.run_crons()
|
env.run_crons()
|
||||||
|
|
||||||
assert datetime.now() - datetime.strptime(pr_id.merge_date, FMT) <= timedelta(minutes=1),\
|
assert datetime.utcnow() - datetime.strptime(pr_id.merge_date, FMT) <= timedelta(minutes=1),\
|
||||||
"check if merge date was set about now (within a minute as crons and " \
|
"check if merge date was set about now (within a minute as crons and " \
|
||||||
"RPC calls yield various delays before we're back)"
|
"RPC calls yield various delays before we're back)"
|
||||||
|
|
||||||
@ -108,6 +108,12 @@ def test_straightforward_flow(env, config, make_repo, users):
|
|||||||
# TODO: add original committer (if !author) as co-author in commit message?
|
# TODO: add original committer (if !author) as co-author in commit message?
|
||||||
assert c.author['name'] == other_user['user'], "author should still be original's probably"
|
assert c.author['name'] == other_user['user'], "author should still be original's probably"
|
||||||
assert c.committer['name'] == other_user['user'], "committer should also still be the original's, really"
|
assert c.committer['name'] == other_user['user'], "committer should also still be the original's, really"
|
||||||
|
|
||||||
|
assert pr1.ping() == "@%s @%s " % (
|
||||||
|
config['role_other']['user'],
|
||||||
|
config['role_reviewer']['user'],
|
||||||
|
), "ping of forward-port PR should include author and reviewer of source"
|
||||||
|
|
||||||
assert prod.read_tree(c) == {
|
assert prod.read_tree(c) == {
|
||||||
'f': 'c',
|
'f': 'c',
|
||||||
'g': 'b',
|
'g': 'b',
|
||||||
|
@ -386,7 +386,7 @@ conflict!
|
|||||||
# 2. "forward port chain" bit
|
# 2. "forward port chain" bit
|
||||||
# 3. updated / modified & got detached
|
# 3. updated / modified & got detached
|
||||||
assert pr2.comments[3:] == [
|
assert pr2.comments[3:] == [
|
||||||
(users['user'], f"@{users['user']} WARNING: the latest change ({pr2_id.head}) triggered "
|
(users['user'], f"@{users['user']} @{users['reviewer']} WARNING: the latest change ({pr2_id.head}) triggered "
|
||||||
f"a conflict when updating the next forward-port "
|
f"a conflict when updating the next forward-port "
|
||||||
f"({pr3_id.display_name}), and has been ignored.\n\n"
|
f"({pr3_id.display_name}), and has been ignored.\n\n"
|
||||||
f"You will need to update this pull request "
|
f"You will need to update this pull request "
|
||||||
@ -398,7 +398,7 @@ conflict!
|
|||||||
# 2. forward-port chain thing
|
# 2. forward-port chain thing
|
||||||
assert repo.get_pr(pr3_id.number).comments[2:] == [
|
assert repo.get_pr(pr3_id.number).comments[2:] == [
|
||||||
(users['user'], re_matches(f'''\
|
(users['user'], re_matches(f'''\
|
||||||
@{users['user']} WARNING: the update of {pr2_id.display_name} to {pr2_id.head} has caused a \
|
@{users['user']} @{users['reviewer']} WARNING: the update of {pr2_id.display_name} to {pr2_id.head} has caused a \
|
||||||
conflict in this pull request, data may have been lost.
|
conflict in this pull request, data may have been lost.
|
||||||
|
|
||||||
stdout:
|
stdout:
|
||||||
|
Loading…
Reference in New Issue
Block a user