mirror of
https://github.com/odoo/runbot.git
synced 2025-03-15 23:45:44 +07:00
[IMP] runbot_merge: split tagging cron out of main progress cron
They're completely independent (or should be), and there's no reason for the tagging cron to extend the "lifetime" of the main cron's transaction (and thus extend the odds of racey behaviour).
This commit is contained in:
parent
f238304c44
commit
5ec2c12454
@ -9,7 +9,17 @@
|
||||
<field name="numbercall">-1</field>
|
||||
<field name="doall" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.cron" id="fetch_prs_cron">
|
||||
<record model="ir.cron" id="feedback_cron">
|
||||
<field name="name">Send feedback to PR</field>
|
||||
<field name="model_id" ref="model_runbot_merge_project"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">model._send_feedback()</field>
|
||||
<field name="interval_number">1</field>
|
||||
<field name="interval_type">minutes</field>
|
||||
<field name="numbercall">-1</field>
|
||||
<field name="doall" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.cron" id="fetch_prs_cron">
|
||||
<field name="name">Check for PRs to fetch</field>
|
||||
<field name="model_id" ref="model_runbot_merge_project"/>
|
||||
<field name="state">code</field>
|
||||
|
@ -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
|
||||
|
@ -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'
|
||||
|
Loading…
Reference in New Issue
Block a user