From 851656bec0140056f3f426d6360158e9b0d7948c Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 16 Sep 2024 12:49:23 +0200 Subject: [PATCH] [IMP] runbot_merge: set status on skipchecks & use that - rather than enumerate states, forward-porting should just check if the statuses are successful on a PR - for the same consistency reasons explained in f97502e503cb52c0000ad9b153c4ddb7482c3a6d, `skipchecks` should force the status of a PR to `success`: it very odd that a PR would be ready without being validated... --- runbot_merge/models/batch.py | 2 +- runbot_merge/models/pull_requests.py | 5 ++++- runbot_merge/tests/test_oddities.py | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/runbot_merge/models/batch.py b/runbot_merge/models/batch.py index d920802f..1a96075e 100644 --- a/runbot_merge/models/batch.py +++ b/runbot_merge/models/batch.py @@ -432,7 +432,7 @@ class Batch(models.Model): _logger.info('-> no parent %s (%s)', batch, prs) continue if not force_fw and batch.source.fw_policy != 'skipci' \ - and (invalid := batch.prs.filtered(lambda p: p.state not in ['validated', 'ready'])): + and (invalid := batch.prs.filtered(lambda p: p.status != 'success')): _logger.info( '-> wrong state %s (%s)', batch, diff --git a/runbot_merge/models/pull_requests.py b/runbot_merge/models/pull_requests.py index 4c175194..dd27fe36 100644 --- a/runbot_merge/models/pull_requests.py +++ b/runbot_merge/models/pull_requests.py @@ -1163,7 +1163,7 @@ For your own safety I've ignored *everything in your entire comment*. super().modified(fnames, create, before) @api.depends( - 'statuses', 'overrides', 'target', 'parent_id', + 'statuses', 'overrides', 'target', 'parent_id', 'skipchecks', 'repository.status_ids.context', 'repository.status_ids.branch_filter', 'repository.status_ids.prs', @@ -1173,6 +1173,9 @@ For your own safety I've ignored *everything in your entire comment*. statuses = {**json.loads(pr.statuses), **pr._get_overrides()} pr.statuses_full = json.dumps(statuses, indent=4) + if pr.skipchecks: + pr.status = 'success' + continue st = 'success' for ci in pr.repository.status_ids._for_pr(pr): diff --git a/runbot_merge/tests/test_oddities.py b/runbot_merge/tests/test_oddities.py index 6bee3696..e0f530b5 100644 --- a/runbot_merge/tests/test_oddities.py +++ b/runbot_merge/tests/test_oddities.py @@ -260,7 +260,7 @@ def test_force_ready(env, repo, config): pr_id.skipchecks = True assert pr_id.state == 'ready' - assert pr_id.status == 'pending' + assert pr_id.status == 'success' reviewer = env['res.users'].browse([env._uid]).partner_id assert pr_id.reviewed_by == reviewer