5 Commits

Author SHA1 Message Date
b4b2b2ec5d Merge pull request 'Don't check merge base branch' (#13) from 10-no-recheck-master into master
All checks were successful
test / test (push) Successful in 53s
build / build (push) Successful in 2m22s
Reviewed-on: #13
2024-10-07 14:39:35 +00:00
ec8e3e491e Don't check merge base branch
All checks were successful
test / test (pull_request) Successful in 51s
build / build (pull_request) Successful in 2m9s
2024-10-07 16:32:49 +02:00
2245698405 Merge pull request 'Add title to output' (#12) from 11-title into master
Some checks failed
test / test (push) Successful in 38s
build / build (push) Failing after 14m37s
Reviewed-on: #12
2024-10-07 14:07:30 +00:00
9ee3ec2018 Add title to pr command output
All checks were successful
test / test (pull_request) Successful in 53s
build / build (pull_request) Successful in 2m11s
2024-10-07 16:02:45 +02:00
356da4d8ec Merge pull request 'Backport checking' (#9) from 8-backport into master
Some checks failed
test / test (push) Successful in 38s
build / build (push) Failing after 13m51s
2024-10-06 23:53:18 +00:00
4 changed files with 39 additions and 4 deletions

View File

@@ -28,6 +28,8 @@ def pr(
status = pr_merge_status(pr, branches) status = pr_merge_status(pr, branches)
else: else:
status = pr_merge_status(pr) status = pr_merge_status(pr)
console.print(f"{status.title}\n", highlight=False)
merged = ":white_check_mark: merged" if status.merged else ":x: merged" merged = ":white_check_mark: merged" if status.merged else ":x: merged"
console.print(merged, highlight=False) console.print(merged, highlight=False)

View File

@@ -9,6 +9,7 @@ BACKPORT_LABEL = "backport release-24.05"
class PRStatus(BaseModel): class PRStatus(BaseModel):
title: str
merged: bool merged: bool
branches: dict[str, bool] branches: dict[str, bool]
@@ -40,10 +41,13 @@ def pr_merge_status(
pr_response.raise_for_status() pr_response.raise_for_status()
pr_data = pr_response.json() pr_data = pr_response.json()
title = pr_data["title"]
merged = pr_data["merged"] merged = pr_data["merged"]
if merged is False: if merged is False:
return PRStatus(merged=False, branches={branch: False for branch in branches}) return PRStatus(
title=title, merged=False, branches={branch: False for branch in branches}
)
commit_sha = pr_data.get("merge_commit_sha") commit_sha = pr_data.get("merge_commit_sha")
@@ -54,6 +58,13 @@ def pr_merge_status(
results = {} results = {}
# Check if base branch is in our list, if it is
# no need to call commit_in_branch
merge_base_branch = pr_data.get("base", {}).get("ref")
if merge_base_branch in branches:
results[merge_base_branch] = True
branches.remove(merge_base_branch)
for branch in branches: for branch in branches:
in_branch = commit_in_branch(commit_sha, branch) in_branch = commit_in_branch(commit_sha, branch)
results[branch] = in_branch results[branch] = in_branch
@@ -77,11 +88,11 @@ def pr_merge_status(
backport_sha = backport_response.json().get("merge_commit_sha") backport_sha = backport_response.json().get("merge_commit_sha")
if backport_sha is None: if backport_sha is None:
results[f"nixos-24.05 (#{backport_pr})"] = False results[f"nixos-24.05 (#{backport_pr})"] = False
return PRStatus(merged=True, branches=results) return PRStatus(title=title, merged=True, branches=results)
results.pop("nixos-24.05") results.pop("nixos-24.05")
results[f"nixos-24.05 (#{backport_pr})"] = commit_in_branch( results[f"nixos-24.05 (#{backport_pr})"] = commit_in_branch(
backport_sha, "nixos-24.05" backport_sha, "nixos-24.05"
) )
return PRStatus(merged=True, branches=results) return PRStatus(title=title, merged=True, branches=results)

View File

@@ -1,6 +1,6 @@
[tool.poetry] [tool.poetry]
name = "nixprstatus" name = "nixprstatus"
version = "0.1.1" version = "0.1.3"
description = "Nixpkgs PR status checker" description = "Nixpkgs PR status checker"
authors = ["Torjus Håkestad <torjus@usit.uio.no>"] authors = ["Torjus Håkestad <torjus@usit.uio.no>"]
license = "MIT" license = "MIT"

View File

@@ -57,6 +57,28 @@ class TestPRMergeStatus(unittest.TestCase):
self.assertTrue(res.merged) self.assertTrue(res.merged)
self.assertTrue(res.branches["nixos-24.05 (#346022)"]) self.assertTrue(res.branches["nixos-24.05 (#346022)"])
@unittest.mock.patch("requests.get", side_effect=mocked_requests_get)
def test_pr_merge_status_title_345769(self, mock_get):
pr = 345769
branches = ["nixos-24.05"]
expected_title = "Firefox: 130.0.1 -> 131.0; 128.2.0esr -> 128.3.0esr; 115.15.0esr -> 115.16.0esr"
res = pr_merge_status(pr, branches, check_backport=True)
self.assertEqual(res.title, expected_title)
@unittest.mock.patch("requests.get", side_effect=mocked_requests_get)
def test_pr_merge_status_no_check_master_345583(self, mock_get):
pr = 345583
branches = ["master", "nixos-unstable", "nixos-24.05"]
master_compare_url = "https://api.github.com/repos/NixOS/nixpkgs/compare/master...2c5fac3edf2d00d948253e392ec1604b29b38f14"
res = pr_merge_status(pr, branches, check_backport=False)
self.assertTrue(res.merged)
self.assertTrue(res.branches["master"])
urls_called = [call[0][0] for call in mock_get.call_args_list]
self.assertFalse(master_compare_url in urls_called)
class TestCommitInBranch(unittest.TestCase): class TestCommitInBranch(unittest.TestCase):
@unittest.mock.patch("requests.get", side_effect=mocked_requests_get) @unittest.mock.patch("requests.get", side_effect=mocked_requests_get)