[IMP] runbot_merge: minor simplification of test_by_branch

Dedup' the application of statuses. Although it is somewhat slower do
keep applying them one by one to ensure all are required.
This commit is contained in:
Xavier Morel 2024-12-03 11:15:11 +01:00
parent ee55c8c630
commit 31f3edeea6

View File

@ -28,19 +28,12 @@ def test_status_applies(env, repo, config):
[c] = repo.make_commits(m, Commit('pr', tree={'a': '2'}), ref='heads/change') [c] = repo.make_commits(m, Commit('pr', tree={'a': '2'}), ref='heads/change')
pr = repo.make_pr(target='master', title="super change", head='change') pr = repo.make_pr(target='master', title="super change", head='change')
pr_id = to_pr(env, pr) pr_id = to_pr(env, pr)
assert pr_id.state == 'opened'
with repo: for context in ['ci', 'pr', 'lint']:
repo.post_status(c, 'success', 'ci') assert pr_id.state == 'opened'
env.run_crons(None) with repo:
assert pr_id.state == 'opened' repo.post_status(c, 'success', context)
with repo: env.run_crons(None)
repo.post_status(c, 'success', 'pr')
env.run_crons(None)
assert pr_id.state == 'opened'
with repo:
repo.post_status(c, 'success', 'lint')
env.run_crons(None)
assert pr_id.state == 'validated' assert pr_id.state == 'validated'
with repo: with repo:
@ -48,18 +41,11 @@ def test_status_applies(env, repo, config):
env.run_crons() env.run_crons()
st = env['runbot_merge.stagings'].search([]) st = env['runbot_merge.stagings'].search([])
assert st.state == 'pending' for context in ['ci', 'lint', 'staging']:
with repo: assert st.state == 'pending'
repo.post_status('staging.master', 'success', 'ci') with repo:
env.run_crons(None) repo.post_status('staging.master', 'success', context)
assert st.state == 'pending' env.run_crons(None)
with repo:
repo.post_status('staging.master', 'success', 'lint')
env.run_crons(None)
assert st.state == 'pending'
with repo:
repo.post_status('staging.master', 'success', 'staging')
env.run_crons(None)
assert st.state == 'success' assert st.state == 'success'
@pytest.mark.usefixtures('_setup_statuses') @pytest.mark.usefixtures('_setup_statuses')
@ -75,15 +61,12 @@ def test_status_skipped(env, project, repo, config):
[c] = repo.make_commits(m, Commit('pr', tree={'a': '2'}), ref='heads/change') [c] = repo.make_commits(m, Commit('pr', tree={'a': '2'}), ref='heads/change')
pr = repo.make_pr(target='maintenance', title="super change", head='change') pr = repo.make_pr(target='maintenance', title="super change", head='change')
pr_id = to_pr(env, pr) pr_id = to_pr(env, pr)
assert pr_id.state == 'opened'
with repo: for context in ['ci', 'pr']:
repo.post_status(c, 'success', 'ci') assert pr_id.state == 'opened'
env.run_crons(None) with repo:
assert pr_id.state == 'opened' repo.post_status(c, 'success', context)
with repo: env.run_crons(None)
repo.post_status(c, 'success', 'pr')
env.run_crons(None)
assert pr_id.state == 'validated' assert pr_id.state == 'validated'
with repo: with repo:
@ -91,14 +74,11 @@ def test_status_skipped(env, project, repo, config):
env.run_crons() env.run_crons()
st = env['runbot_merge.stagings'].search([]) st = env['runbot_merge.stagings'].search([])
assert st.state == 'pending' for context in ['staging', 'ci']:
with repo: assert st.state == 'pending'
repo.post_status('staging.maintenance', 'success', 'staging') with repo:
env.run_crons(None) repo.post_status('staging.maintenance', 'success', context)
assert st.state == 'pending' env.run_crons(None)
with repo:
repo.post_status('staging.maintenance', 'success', 'ci')
env.run_crons(None)
assert st.state == 'success' assert st.state == 'success'
def test_pseudo_version_tag(env, project, make_repo, setreviewers, config): def test_pseudo_version_tag(env, project, make_repo, setreviewers, config):