[IMP] runbot_merge: send feedback when merge method is changed

When a user changes the merge method via github messages, no feedback is
sent. This could lead to strange behavior, for example when a user try
to joke with the mergebot like this:

> robodoo are you goin ti merge my PR rogntudju !

This sets the merge method to "merge" and the user is not aware of it.
This commit is contained in:
Christophe Monniez 2018-12-13 13:28:20 +01:00 committed by xmo-odoo
parent e01ad86171
commit 549452f12d
2 changed files with 21 additions and 1 deletions

View File

@ -625,6 +625,12 @@ class PullRequests(models.Model):
if is_admin:
self.merge_method = param
ok = True
explanation = next(label for value, label in type(self).merge_method.selection if value == param)
Feedback.create({
'repository': self.repository.id,
'pull_request': self.number,
'message':"Merge method set to %s" % explanation
})
_logger.info(
"%s %s(%s) on %s:%s by %s (%s)",

View File

@ -337,6 +337,7 @@ def test_staging_merge_fail(env, repo, users):
assert prx.labels == {'seen 🙂', 'error 🙅'}
assert prx.comments == [
(users['reviewer'], 'hansen r+ rebase-merge'),
(users['user'], 'Merge method set to rebase and merge, using the PR as merge commit message'),
(users['user'], re_matches('^Unable to stage PR')),
]
@ -395,6 +396,7 @@ def test_staging_ci_failure_single(env, repo, users):
assert prx.comments == [
(users['reviewer'], 'hansen r+ rebase-merge'),
(users['user'], "Merge method set to rebase and merge, using the PR as merge commit message"),
(users['user'], 'Staging failed: ci/runbot')
]
@ -933,7 +935,7 @@ class TestMergeMethod:
"""),
]
def test_pr_method_no_review(self, repo, env):
def test_pr_method_no_review(self, repo, env, users):
""" Configuring the method should be idependent from the review
"""
m0 = repo.make_commit(None, 'M0', None, tree={'m': '0'})
@ -953,12 +955,24 @@ class TestMergeMethod:
prx.post_comment('hansen rebase-merge', "reviewer")
assert pr.merge_method == 'rebase-merge'
run_crons(env)
prx.post_comment('hansen merge', "reviewer")
assert pr.merge_method == 'merge'
run_crons(env)
prx.post_comment('hansen rebase-ff', "reviewer")
assert pr.merge_method == 'rebase-ff'
run_crons(env)
assert prx.comments == [
(users['reviewer'], 'hansen rebase-merge'),
(users['user'], "Merge method set to rebase and merge, using the PR as merge commit message"),
(users['reviewer'], 'hansen merge'),
(users['user'], "Merge method set to merge directly, using the PR as merge commit message"),
(users['reviewer'], 'hansen rebase-ff'),
(users['user'], "Merge method set to rebase and fast-forward"),
]
def test_pr_rebase_merge(self, repo, env):
""" test result on rebase-merge