From 5b3d0c145783c2a4f620d427933992a8552cdbfc Mon Sep 17 00:00:00 2001 From: Emily Bourne Date: Thu, 15 Feb 2024 15:38:52 +0100 Subject: [PATCH] Fix bot PR state calculation --- ci_tools/bot_tools/bot_funcs.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/ci_tools/bot_tools/bot_funcs.py b/ci_tools/bot_tools/bot_funcs.py index a330b3c0d0..cc4194bde4 100644 --- a/ci_tools/bot_tools/bot_funcs.py +++ b/ci_tools/bot_tools/bot_funcs.py @@ -290,15 +290,15 @@ def run_tests(self, tests, python_version = None, force_run = False): self._GAI.create_comment(self._pr_id, "There are unrecognised tests.\n"+message_from_file('show_tests.txt')) return [] else: - check_runs = self._GAI.get_check_runs(self._ref)['check_runs'] - already_triggered = [c["name"] for c in check_runs if c['status'] in ('completed', 'in_progress') and \ - c['conclusion'] != 'cancelled' and \ - c['name'] not in ('coverage',)] + check_runs = {c["name"]: c for c in self._GAI.get_check_runs(self._ref)['check_runs']} + already_triggered = [n for n, c in check_runs.items() if c['status'] in ('completed', 'in_progress') and \ + c['conclusion'] != 'cancelled' and \ + self.get_name_key(n) != 'coverage'] already_triggered_names = [self.get_name_key(t) for t in already_triggered] - already_programmed = {c["name"]:c for c in check_runs if c['status'] == 'queued'} - success_names = [self.get_name_key(c["name"]) for c in check_runs if c['status'] == 'completed' and c['conclusion'] == 'success'] + already_programmed = {n:c for n,c in check_runs.items() if c['status'] == 'queued'} + success_names = [self.get_name_key(n) for n,c in check_runs.items() if c['status'] == 'completed' and c['conclusion'] == 'success'] print(already_triggered) - states = [c['conclusion'] for c in check_runs if c['status'] == 'completed'] + states = [] if not force_run: # Get a list of all commits on this branch @@ -317,6 +317,7 @@ def run_tests(self, tests, python_version = None, force_run = False): pv = python_version or default_python_versions[t] key = f"({t}, {pv})" if any(key in a for a in already_triggered): + states.append(check_runs[t]['conclusion']) continue name = f"{test_names[t]} {key}" if not force_run and not self.is_test_required(commit_log, name, t, states): @@ -555,6 +556,7 @@ def request_mark_as_ready(self): _, err = p.communicate() print(err) + print(states) if all(s == 'success' for s in states): self.mark_as_ready(False)