Skip to content

Commit 509c152

Browse files
committed
[IMP] *: modernise tests via to_pr
The `to_pr` helper was added a *while* ago to replace the pretty verbose process of looking a PR with the right number in the right repository after a `make_pr`. However while I did some ad-hoc replacement of existing `search` calls as I had to work with existing tests I never did a full search and replace to try and excise searches from the test suite. This is now done. I've undoubtedly missed a few, but a hundred-odd lines of codes have been simplified.
1 parent 83e588d commit 509c152

File tree

8 files changed

+84
-245
lines changed

8 files changed

+84
-245
lines changed

forwardport/tests/test_overrides.py

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import json
22

3-
from utils import Commit, make_basic
3+
from utils import Commit, make_basic, to_pr
4+
45

56
def statuses(pr):
67
return {
@@ -25,7 +26,7 @@ def test_override_inherited(env, config, make_repo, users):
2526
pr.post_comment('hansen r+ override=default', config['role_reviewer']['token'])
2627
env.run_crons()
2728

28-
original = env['runbot_merge.pull_requests'].search([('repository.name', '=', repo.name), ('number', '=', pr.number)])
29+
original = to_pr(env, pr)
2930
assert original.state == 'ready'
3031
assert not original.limit_id
3132

@@ -93,7 +94,7 @@ def test_override_combination(env, config, make_repo, users):
9394
pr.post_comment('hansen r+ override=ci/runbot', config['role_reviewer']['token'])
9495
env.run_crons()
9596

96-
pr0_id = env['runbot_merge.pull_requests'].search([('repository.name', '=', repo.name), ('number', '=', pr.number)])
97+
pr0_id = to_pr(env, pr)
9798
assert pr0_id.state == 'ready'
9899
assert statuses(pr0_id) == {'ci/runbot': 'success', 'legal/cla': 'success'}
99100

forwardport/tests/test_simple.py

+3-12
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,7 @@ def test_straightforward_flow(env, config, make_repo, users):
5555
# use rebase-ff (instead of rebase-merge) so we don't have to dig in
5656
# parents of the merge commit to find the cherrypicks
5757
pr.post_comment('hansen r+ rebase-ff', config['role_reviewer']['token'])
58-
pr_id = env['runbot_merge.pull_requests'].search([
59-
('repository.name', '=', prod.name),
60-
('number', '=', pr.number),
61-
])
58+
pr_id = to_pr(env, pr)
6259
assert not pr_id.merge_date,\
6360
"PR obviously shouldn't have a merge date before being merged"
6461

@@ -1086,10 +1083,7 @@ def test_delete_normal(self, env, config, make_repo):
10861083
prod.post_status('staging.a', 'success', 'ci/runbot')
10871084
env.run_crons()
10881085

1089-
pr_id = env['runbot_merge.pull_requests'].search([
1090-
('repository.name', '=', prod.name),
1091-
('number', '=', pr.number)
1092-
])
1086+
pr_id = to_pr(env, pr)
10931087
assert pr_id.state == 'merged'
10941088
removers = env['forwardport.branch_remover'].search([])
10951089
to_delete_branch = removers.mapped('pr_id')
@@ -1160,10 +1154,7 @@ def make_pr(self, env, config, make_repo):
11601154
r.make_commits('c', Commit('p', tree={'x': '0'}), ref='heads/testbranch')
11611155
pr = r.make_pr(target='a', head='testbranch')
11621156

1163-
return r, pr, env['runbot_merge.pull_requests'].search([
1164-
('repository.name', '=', r.name),
1165-
('number', '=', pr.number),
1166-
])
1157+
return r, pr, to_pr(env, pr)
11671158

11681159
# FIXME: remove / merge into mergebot tests
11691160
def test_botname_casing(self, env, config, make_repo):

forwardport/tests/test_weird.py

+4-13
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,7 @@ def test_single_first(self, env, repos, config):
278278
pr = a.make_pr(target='a', title="a pr", head=a_dev.owner + ':change')
279279
a.post_status(c, 'success', 'ci/runbot')
280280
pr.post_comment('hansen r+', config['role_reviewer']['token'])
281-
p = env['runbot_merge.pull_requests'].search([('repository.name', '=', a.name), ('number', '=', pr.number)])
281+
p = to_pr(env, pr)
282282
env.run_crons()
283283
assert p.staging_id
284284
with a, b:
@@ -371,14 +371,8 @@ def test_both_first(self, env, repos, config, users):
371371
repo.post_status('staging.a', 'success', 'ci/runbot')
372372
env.run_crons()
373373

374-
pr_a_id = env['runbot_merge.pull_requests'].search([
375-
('repository.name', '=', a.name),
376-
('number', '=', pr_a.number),
377-
])
378-
pr_b_id = env['runbot_merge.pull_requests'].search([
379-
('repository.name', '=', b.name),
380-
('number', '=', pr_b.number)
381-
])
374+
pr_a_id = to_pr(env, pr_a)
375+
pr_b_id = to_pr(env, pr_b)
382376
assert pr_a_id.state == pr_b_id.state == 'merged'
383377
assert env['runbot_merge.pull_requests'].search([]) == pr_a_id | pr_b_id
384378
# should have refused to create a forward port because the PRs have
@@ -645,10 +639,7 @@ def test_skip_ci_all(env, config, make_repo):
645639
pr.post_comment('hansen fw=skipci', config['role_reviewer']['token'])
646640
pr.post_comment('hansen r+', config['role_reviewer']['token'])
647641
env.run_crons()
648-
assert env['runbot_merge.pull_requests'].search([
649-
('repository.name', '=', prod.name),
650-
('number', '=', pr.number)
651-
]).batch_id.fw_policy == 'skipci'
642+
assert to_pr(env, pr).batch_id.fw_policy == 'skipci'
652643

653644
with prod:
654645
prod.post_status('staging.a', 'success', 'legal/cla')

mergebot_test_utils/utils.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -180,8 +180,8 @@ def make_basic(
180180
def pr_page(page, pr):
181181
return html.fromstring(page(f'/{pr.repo.name}/pull/{pr.number}'))
182182

183-
def to_pr(env, pr):
184-
for _ in range(5):
183+
def to_pr(env, pr, *, attempts=5):
184+
for _ in range(attempts):
185185
pr_id = env['runbot_merge.pull_requests'].search([
186186
('repository.name', '=', pr.repo.name),
187187
('number', '=', pr.number),

0 commit comments

Comments
 (0)