Move get_commit_filtered_statuses to commit_status_helper

This commit is contained in:
Mikhail f. Shiryaev 2022-09-14 16:00:46 +02:00
parent e2de809532
commit eec74e46e4
No known key found for this signature in database
GPG Key ID: 4B02ED204C7D93F4
2 changed files with 22 additions and 22 deletions

View File

@ -10,9 +10,11 @@ from ci_config import CI_CONFIG, REQUIRED_CHECKS
from env_helper import GITHUB_REPOSITORY, GITHUB_RUN_URL
from github import Github
from github.Commit import Commit
from github.CommitStatus import CommitStatus
from pr_info import PRInfo, SKIP_MERGEABLE_CHECK_LABEL
RETRY = 5
CommitStatuses = List[CommitStatus]
def override_status(status: str, check_name: str, invert=False) -> str:
@ -70,6 +72,22 @@ def post_commit_status_to_file(
out.writerow([state, report_url, description])
def get_commit_filtered_statuses(commit: Commit) -> CommitStatuses:
"""
Squash statuses to latest state
1. context="first", state="success", update_time=1
2. context="second", state="success", update_time=2
3. context="first", stat="failure", update_time=3
=========>
1. context="second", state="success"
2. context="first", stat="failure"
"""
filtered = {}
for status in sorted(commit.get_statuses(), key=lambda x: x.updated_at):
filtered[status.context] = status
return list(filtered.values())
def remove_labels(gh: Github, pr_info: PRInfo, labels_names: List[str]):
repo = gh.get_repo(GITHUB_REPOSITORY)
pull_request = repo.get_pull(pr_info.number)

View File

@ -1,14 +1,13 @@
#!/usr/bin/env python3
from typing import List, Optional
from typing import Optional
from commit_status_helper import get_commit
from commit_status_helper import get_commit, get_commit_filtered_statuses
from github import Github
from github.CommitStatus import CommitStatus
from pr_info import PRInfo
CommitStatuses = List[CommitStatus]
# TODO: move it to commit_status_helper
class RerunHelper:
def __init__(self, gh: Github, pr_info: PRInfo, check_name: str):
self.gh = gh
@ -18,7 +17,7 @@ class RerunHelper:
if commit is None:
raise ValueError(f"unable to receive commit for {pr_info.sha}")
self.pygh_commit = commit
self.statuses = self.ger_filtered_statuses()
self.statuses = get_commit_filtered_statuses(commit)
def is_already_finished_by_status(self) -> bool:
# currently we agree even for failed statuses
@ -35,20 +34,3 @@ class RerunHelper:
if self.check_name in status.context:
return status
return None
def ger_filtered_statuses(self) -> CommitStatuses:
"""
Squash statuses to latest state
1. context="first", state="success", update_time=1
2. context="second", state="success", update_time=2
3. context="first", stat="failure", update_time=3
=========>
1. context="second", state="success"
2. context="first", stat="failure"
"""
filt = {}
for status in sorted(
self.pygh_commit.get_statuses(), key=lambda x: x.updated_at
):
filt[status.context] = status
return list(filt.values())