nixprstatus/tests/test_pr.py

88 lines
3.1 KiB
Python
Raw Normal View History

2024-10-05 23:53:34 +00:00
import unittest
import unittest.mock
import requests
import json
2024-10-06 17:31:14 +00:00
from nixprstatus.pr import commit_in_branch, pr_merge_status, commits_since
2024-10-05 23:53:34 +00:00
def mocked_requests_get(*args, **kwargs):
class MockedResponse:
def __init__(self, json_data, status_code):
self.json_data = json_data
self.status_code = status_code
def json(self):
return json.loads(self.json_data)
def raise_for_status(self):
if self.status_code not in [200, 201]:
raise requests.exceptions.HTTPError()
if "pulls" in args[0]:
pr = args[0].split("/")[-1]
with open(f"tests/fixtures/pulls_{pr}.json") as f:
data = f.read()
return MockedResponse(data, 200)
elif "compare" in args[0]:
branch, commit_sha = args[0].split("/")[-1].split("...")
with open(f"tests/fixtures/compare_{branch}_{commit_sha}.json") as f:
data = f.read()
return MockedResponse(data, 200)
2024-10-06 23:50:22 +00:00
elif "comments" in args[0]:
pr = args[0].split("/")[-2]
with open(f"tests/fixtures/comments_{pr}.json") as f:
data = f.read()
return MockedResponse(data, 200)
2024-10-05 23:53:34 +00:00
class TestPRMergeStatus(unittest.TestCase):
@unittest.mock.patch("requests.get", side_effect=mocked_requests_get)
def test_pr_merge_status_345583(self, mock_get):
pr = 345583
branches = ["master", "nixos-unstable", "nixos-24.05"]
2024-10-06 23:50:22 +00:00
res = pr_merge_status(pr, branches, check_backport=False)
2024-10-05 23:53:34 +00:00
self.assertTrue(res.merged)
self.assertTrue(res.branches["master"])
self.assertTrue(res.branches["nixos-unstable"])
self.assertFalse(res.branches["nixos-24.05"])
2024-10-06 23:50:22 +00:00
@unittest.mock.patch("requests.get", side_effect=mocked_requests_get)
def test_pr_merge_status_backport_345769(self, mock_get):
pr = 345769
branches = ["nixos-24.05"]
res = pr_merge_status(pr, branches, check_backport=True)
self.assertTrue(res.merged)
self.assertTrue(res.branches["nixos-24.05 (#346022)"])
2024-10-07 14:02:45 +00:00
@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)
2024-10-05 23:53:34 +00:00
class TestCommitInBranch(unittest.TestCase):
@unittest.mock.patch("requests.get", side_effect=mocked_requests_get)
def test_commit_in_branch_2c5fac3e(self, mock_get):
commit_sha = "2c5fac3edf2d00d948253e392ec1604b29b38f14"
res = commit_in_branch(commit_sha, "master")
self.assertTrue(res)
res = commit_in_branch(commit_sha, "nixos-24.05")
self.assertFalse(res)
2024-10-06 17:31:14 +00:00
class TestCommitsSince(unittest.TestCase):
@unittest.mock.patch("requests.get", side_effect=mocked_requests_get)
def test_commits_since_27e30d17(self, mock_get):
commit_sha = "27e30d177e57d912d614c88c622dcfdb2e6e6515"
res = commits_since("nixos-unstable", commit_sha)
self.assertEqual(res, 795)