Skip to content

Commit

Permalink
Fix test suite
Browse files Browse the repository at this point in the history
Signed-off-by: Petr "Stone" Hracek <[email protected]>
  • Loading branch information
phracek committed Nov 5, 2024
1 parent 924e8ac commit 7f5b747
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 22 deletions.
20 changes: 12 additions & 8 deletions auto_merger/merger.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@


class AutoMerger:
repo_data: List = []
container_name: str = ""
container_dir: Path
current_dir = os.getcwd()
Expand All @@ -55,6 +54,7 @@ def __init__(self, github_labels, blocking_labels, approvals=2):
self.pr_to_merge = {}
self.blocked_body = []
self.approval_body = []
self.repo_data: List = []

def is_correct_repo(self) -> bool:
cmd = ["gh repo view --json name"]
Expand All @@ -71,9 +71,9 @@ def get_gh_json_output(cmd):

def get_gh_pr_list(self):
cmd = ["gh pr list -s open --json number,title,labels,reviews,isDraft"]
repo_data = AutoMerger.get_gh_json_output(cmd=cmd)
for pr in repo_data:
if self.is_draft(pr):
repo_data_output = AutoMerger.get_gh_json_output(cmd=cmd)
for pr in repo_data_output:
if AutoMerger.is_draft(pr):
continue
if self.is_changes_requested(pr):
continue
Expand Down Expand Up @@ -159,20 +159,24 @@ def is_changes_requested(self, pr):
return True
return False

def is_draft(self, pr):
if pr['isDraft']:
return True
@staticmethod
def is_draft(pull_request):
if "isDraft" in pull_request:
if pull_request["isDraft"] in ["True", "true"]:
return True
return False

def check_pr_to_merge(self) -> bool:
if len(self.repo_data) == 0:
return False
for pr in self.repo_data:
if self.is_draft(pr):
if AutoMerger.is_draft(pr):
continue
self.logger.debug(f"PR status: {pr}")
if not self.check_labels_to_merge(pr):
continue
if "reviews" not in pr:
continue
approval_count = self.check_pr_approvals(pr["reviews"])
self.pr_to_merge[self.container_name] = {
"number": pr["number"],
Expand Down
4 changes: 2 additions & 2 deletions tests/test_correct_repo.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

def test_get_gh_pr_correct_repo(get_repo_name):
flexmock(AutoMerger).should_receive("get_gh_json_output").and_return(get_repo_name)
auto_merger = AutoMerger()
auto_merger = AutoMerger(github_labels=[], blocking_labels=["pr/missing-review"])
auto_merger.container_name = "s2i-nodejs-container"
assert auto_merger.is_correct_repo()

Expand All @@ -16,6 +16,6 @@ def test_get_gh_pr_wrong_repo(get_repo_wrong_name):
flexmock(AutoMerger).should_receive("get_gh_json_output").and_return(
get_repo_wrong_name
)
auto_merger = AutoMerger()
auto_merger = AutoMerger(github_labels=[], blocking_labels=["pr/missing-review"])
auto_merger.container_name = "s2i-nodejs-container"
assert not auto_merger.is_correct_repo()
18 changes: 6 additions & 12 deletions tests/test_pr_status.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,44 +9,38 @@ def test_get_gh_pr_list(get_pr_missing_ci):
flexmock(AutoMerger).should_receive("get_gh_json_output").and_return(
get_pr_missing_ci
)
auto_merger = AutoMerger()
auto_merger = AutoMerger(github_labels=["READY-to-MERGE"], blocking_labels=["pr/missing-review", 'pr/failing-ci'])
auto_merger.container_name = "s2i-nodejs-container"
auto_merger.get_gh_pr_list()
assert auto_merger.repo_data
flexmock(AutoMerger).should_receive("merge_pull_requests").never()


def test_get_gh_two_pr_labels_missing(get_two_pr_missing_labels):
flexmock(AutoMerger).should_receive("get_gh_json_output").and_return(
get_two_pr_missing_labels
)
auto_merger = AutoMerger()
auto_merger = AutoMerger(github_labels=["READY-to-MERGE"], blocking_labels=["pr/missing-review", 'pr/failing-ci'])
auto_merger.container_name = "s2i-nodejs-container"
auto_merger.get_gh_pr_list()
assert auto_merger.repo_data
assert not auto_merger.check_pr_to_merge()
flexmock(AutoMerger).should_receive("merge_pull_requests").never()


def test_get_gh_pr_missing_ci(get_pr_missing_ci):
flexmock(AutoMerger).should_receive("get_gh_json_output").and_return(
get_pr_missing_ci
)
auto_merger = AutoMerger()
auto_merger = AutoMerger(github_labels=["READY-to-MERGE"], blocking_labels=["pr/missing-review", 'pr/failing-ci'])
auto_merger.container_name = "s2i-nodejs-container"
auto_merger.get_gh_pr_list()
assert auto_merger.repo_data
assert not auto_merger.check_pr_to_merge()
flexmock(AutoMerger).should_receive("merge_pull_requests").never()


def test_get_no_pr_for_merge(get_no_mr_to_check):
flexmock(AutoMerger).should_receive("get_gh_json_output").and_return(
get_no_mr_to_check
)
auto_merger = AutoMerger()
def test_get_no_pr_for_merge():
flexmock(AutoMerger).should_receive("get_gh_json_output").and_return([])
auto_merger = AutoMerger(github_labels=["READY-to-MERGE"], blocking_labels=["pr/missing-review", 'pr/failing-ci'])
auto_merger.container_name = "s2i-nodejs-container"
auto_merger.get_gh_pr_list()
assert not auto_merger.repo_data
assert not auto_merger.check_pr_to_merge()
flexmock(AutoMerger).should_receive("merge_pull_requests").never()

0 comments on commit 7f5b747

Please sign in to comment.