From eea3211f2bed385e8fd64620c250547c6643bbfa Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Fri, 1 Mar 2019 15:52:13 +0100 Subject: [PATCH] [IMP] runbot_merge: add logging to PR sync and reset error PRs to open The choice to keep sync'd PRs in error means it's possible to update the code and re-run the PR directly without it going through review & CI again, which is a bit odd. Remove the special case and always reset a sync'd PR to opened for clarity and simplicity. closes #71 closes #83 --- runbot_merge/controllers/__init__.py | 16 ++++++++++++---- runbot_merge/tests/test_basic.py | 2 +- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/runbot_merge/controllers/__init__.py b/runbot_merge/controllers/__init__.py index 05e89b66..7c815259 100644 --- a/runbot_merge/controllers/__init__.py +++ b/runbot_merge/controllers/__init__.py @@ -157,11 +157,19 @@ def handle_pr(env, event): pr_obj.repository.name, pr_obj.number, event['sender']['login'] ) - if pr_obj.state != 'error': - pr_obj.state = 'opened' - pr_obj.head = pr['head']['sha'] - pr_obj.squash = pr['commits'] == 1 + _logger.info( + "PR %s:%s updated to %s by %s, resetting to 'open' and squash=%s", + pr_obj.repository.name, pr_obj.number, + pr['head']['sha'], event['sender']['login'], + pr['commits'] == 1 + ) + + pr_obj.write({ + 'state': 'opened', + 'head': pr['head']['sha'], + 'squash': pr['commits'] == 1, + }) return 'Updated {} to {}'.format(pr_obj.id, pr_obj.head) # don't marked merged PRs as closed (!!!) diff --git a/runbot_merge/tests/test_basic.py b/runbot_merge/tests/test_basic.py index e63e1443..77ccaea5 100644 --- a/runbot_merge/tests/test_basic.py +++ b/runbot_merge/tests/test_basic.py @@ -1563,7 +1563,7 @@ class TestPRUpdate(object): c2 = repo.make_commit(c, 'first', None, tree={'m': 'cc'}) prx.push(c2) assert pr.head == c2 - assert pr.state == 'error' + assert pr.state == 'opened' def test_unknown_pr(self, env, repo): m = repo.make_commit(None, 'initial', None, tree={'m': 'm'})