diff --git a/runbot_merge/data/merge_cron.xml b/runbot_merge/data/merge_cron.xml index cd001c2d..af230f24 100644 --- a/runbot_merge/data/merge_cron.xml +++ b/runbot_merge/data/merge_cron.xml @@ -9,7 +9,17 @@ -1 - + + Send feedback to PR + + code + model._send_feedback() + 1 + minutes + -1 + + + Check for PRs to fetch code diff --git a/runbot_merge/models/pull_requests.py b/runbot_merge/models/pull_requests.py index 64291e82..50323922 100644 --- a/runbot_merge/models/pull_requests.py +++ b/runbot_merge/models/pull_requests.py @@ -242,7 +242,12 @@ class Project(models.Model): }) logger.info("Created staging %s (%s)", st, staged) + # I have no idea why this is necessary for tests to pass, the only + # DB update done not through the ORM is when receiving a notification + # that a PR has been closed + self.invalidate_cache() + def _send_feedback(self): Repos = self.env['runbot_merge.repository'] ghs = {} # noinspection SqlResolve diff --git a/runbot_merge/tests/test_basic.py b/runbot_merge/tests/test_basic.py index 4a360e03..8deaa87e 100644 --- a/runbot_merge/tests/test_basic.py +++ b/runbot_merge/tests/test_basic.py @@ -31,6 +31,7 @@ def test_trivial_flow(env, repo): ]) assert pr.state == 'opened' env['runbot_merge.project']._check_progress() + env['runbot_merge.project']._send_feedback() assert pr1.labels == {'seen 🙂'} # nothing happened @@ -42,6 +43,7 @@ def test_trivial_flow(env, repo): repo.post_status(c1, 'success', 'ci/runbot') assert pr.state == 'validated' env['runbot_merge.project']._check_progress() + env['runbot_merge.project']._send_feedback() assert pr1.labels == {'seen 🙂', 'CI 🤖'} pr1.post_comment('hansen r+', 'reviewer') @@ -50,6 +52,7 @@ def test_trivial_flow(env, repo): # can't check labels here as running the cron will stage it env['runbot_merge.project']._check_progress() + env['runbot_merge.project']._send_feedback() assert pr.staging_id assert pr1.labels == {'seen 🙂', 'CI 🤖', 'r+ 👌', 'merging 👷'} @@ -60,6 +63,7 @@ def test_trivial_flow(env, repo): assert re.match('^force rebuild', staging_head.message) env['runbot_merge.project']._check_progress() + env['runbot_merge.project']._send_feedback() assert pr.state == 'merged' assert pr1.labels == {'seen 🙂', 'CI 🤖', 'r+ 👌', 'merged 🎉'} @@ -235,6 +239,7 @@ def test_staging_conflict(env, repo): repo.post_status(c3, 'success', 'ci/runbot') pr2.post_comment('hansen r+', "reviewer") env['runbot_merge.project']._check_progress() + env['runbot_merge.project']._send_feedback() p_2 = env['runbot_merge.pull_requests'].search([ ('repository.name', '=', repo.name), ('number', '=', pr2.number) @@ -306,6 +311,7 @@ def test_staging_merge_fail(env, repo, users): prx.post_comment('hansen r+', "reviewer") env['runbot_merge.project']._check_progress() + env['runbot_merge.project']._send_feedback() pr1 = env['runbot_merge.pull_requests'].search([ ('repository.name', '=', repo.name), ('number', '=', prx.number) @@ -502,6 +508,7 @@ def test_edit(env, repo): prx.base = '2.0' assert not pr.exists() env['runbot_merge.project']._check_progress() + env['runbot_merge.project']._send_feedback() assert prx.labels == set() prx.base = '1.0'