Add since command #7
| @@ -23,6 +23,14 @@ def commit_in_branch(commit_sha: str, branch: str) -> bool: | |||||||
|     return False |     return False | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def commits_since(first_ref: str, last_ref: str) -> int: | ||||||
|  |     url = f"https://api.github.com/repos/NixOS/nixpkgs/compare/{first_ref}...{last_ref}" | ||||||
|  |     commit_response = requests.get(url, headers=DEFAULT_HEADERS) | ||||||
|  |     commit_response.raise_for_status() | ||||||
|  |  | ||||||
|  |     return commit_response.json()["behind_by"] | ||||||
|  |  | ||||||
|  |  | ||||||
| def pr_merge_status(pr: int, branches: list[str] = DEFAULT_BRANCHES) -> PRStatus: | def pr_merge_status(pr: int, branches: list[str] = DEFAULT_BRANCHES) -> PRStatus: | ||||||
|     url = f"https://api.github.com/repos/NixOS/nixpkgs/pulls/{pr}" |     url = f"https://api.github.com/repos/NixOS/nixpkgs/pulls/{pr}" | ||||||
|     pr_response = requests.get(url, headers=DEFAULT_HEADERS) |     pr_response = requests.get(url, headers=DEFAULT_HEADERS) | ||||||
|   | |||||||
							
								
								
									
										185
									
								
								tests/fixtures/compare_nixos-unstable_27e30d177e57d912d614c88c622dcfdb2e6e6515.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										185
									
								
								tests/fixtures/compare_nixos-unstable_27e30d177e57d912d614c88c622dcfdb2e6e6515.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,185 @@ | |||||||
|  | { | ||||||
|  |   "url": "https://api.github.com/repos/NixOS/nixpkgs/compare/nixos-unstable...27e30d177e57d912d614c88c622dcfdb2e6e6515", | ||||||
|  |   "html_url": "https://github.com/NixOS/nixpkgs/compare/nixos-unstable...27e30d177e57d912d614c88c622dcfdb2e6e6515", | ||||||
|  |   "permalink_url": "https://github.com/NixOS/nixpkgs/compare/NixOS:bc947f5...NixOS:27e30d1", | ||||||
|  |   "diff_url": "https://github.com/NixOS/nixpkgs/compare/nixos-unstable...27e30d177e57d912d614c88c622dcfdb2e6e6515.diff", | ||||||
|  |   "patch_url": "https://github.com/NixOS/nixpkgs/compare/nixos-unstable...27e30d177e57d912d614c88c622dcfdb2e6e6515.patch", | ||||||
|  |   "base_commit": { | ||||||
|  |     "sha": "bc947f541ae55e999ffdb4013441347d83b00feb", | ||||||
|  |     "node_id": "C_kwDOAEVQ_NoAKGJjOTQ3ZjU0MWFlNTVlOTk5ZmZkYjQwMTM0NDEzNDdkODNiMDBmZWI", | ||||||
|  |     "commit": { | ||||||
|  |       "author": { | ||||||
|  |         "name": "Masum Reza", | ||||||
|  |         "email": "50095635+JohnRTitor@users.noreply.github.com", | ||||||
|  |         "date": "2024-10-04T05:06:13Z" | ||||||
|  |       }, | ||||||
|  |       "committer": { | ||||||
|  |         "name": "GitHub", | ||||||
|  |         "email": "noreply@github.com", | ||||||
|  |         "date": "2024-10-04T05:06:13Z" | ||||||
|  |       }, | ||||||
|  |       "message": "alpaca: 2.0.3 -> 2.0.5 (#345070)", | ||||||
|  |       "tree": { | ||||||
|  |         "sha": "3e7376cebbaf8793c39bb68447950f1045fd4ea5", | ||||||
|  |         "url": "https://api.github.com/repos/NixOS/nixpkgs/git/trees/3e7376cebbaf8793c39bb68447950f1045fd4ea5" | ||||||
|  |       }, | ||||||
|  |       "url": "https://api.github.com/repos/NixOS/nixpkgs/git/commits/bc947f541ae55e999ffdb4013441347d83b00feb", | ||||||
|  |       "comment_count": 0, | ||||||
|  |       "verification": { | ||||||
|  |         "verified": true, | ||||||
|  |         "reason": "valid", | ||||||
|  |         "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJm/3fFCRC1aQ7uu5UhlAAA2JMQAIz5pfsohrsrdPgPxlZVDuaQ\nVPLlM82MOpkq958U90OnXyC4ZlIX2+YwvCUkuRjYjMv9VlHMHU6olHy/jvt5VF/g\nckoaAMztOsPqgyKUXiMew83j8L8EBqVQQZ3W2Br9EnzG2RNEDUQdP5c6Fwc4tccl\nmb3PPb15Nm0lFnitwUO78KxILhrekjdxxrKC/wUihaL/gH4CzdkReVZJ6FPbq9l6\n/HTTDW+amrpOr2XLQ2dC5Cy/nvZS+MPjduNSPsf5a5/ElKmNltbPFChTY0pnv/dq\nrH1zDsohfbtk5WgcmLhiIOpvO86yLfa82sPUJA65GuAW7gYGbMsN6Sh3CnfY7sxb\n7x5r7/sSodxG4t2lML571JfX2aFCeNKgeYomViRu1ZGyHg3LJAN8jKi1JIyVCpH1\nkiTOmQQWzPJRC2COvMGSdXVc7h4CuInev7MmDDiubJDkFYyT8DBzpqVxUTmni13p\ndwr6QAWZZpjnxZxVFnYLlTSifLUIazEJTqaNWnCCc99hyWAo+f5njUlT+9fPLoKE\nHAgMmC55sOzOXnLLgPIoZe2g3wtHNELY3Y6wq7hfS2K9GCxJnJ3mttiUypnyHEuR\n/dVGOlES5p7xWUZ+zEYOp+cLnMWudB5X5cf/ojooLQJc8CL8gIfOD7KOrKewf2Yi\nUUUYH6/erCgoQE2klAaS\n=Hu+V\n-----END PGP SIGNATURE-----\n", | ||||||
|  |         "payload": "tree 3e7376cebbaf8793c39bb68447950f1045fd4ea5\nparent 674acd883193175de91d37a6b3ea8c814d12c8bb\nparent e229318f7d34f4988a815e6d10b8fb0f7e0e2974\nauthor Masum Reza <50095635+JohnRTitor@users.noreply.github.com> 1728018373 +0530\ncommitter GitHub <noreply@github.com> 1728018373 +0530\n\nalpaca: 2.0.3 -> 2.0.5 (#345070)\n\n" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "url": "https://api.github.com/repos/NixOS/nixpkgs/commits/bc947f541ae55e999ffdb4013441347d83b00feb", | ||||||
|  |     "html_url": "https://github.com/NixOS/nixpkgs/commit/bc947f541ae55e999ffdb4013441347d83b00feb", | ||||||
|  |     "comments_url": "https://api.github.com/repos/NixOS/nixpkgs/commits/bc947f541ae55e999ffdb4013441347d83b00feb/comments", | ||||||
|  |     "author": { | ||||||
|  |       "login": "JohnRTitor", | ||||||
|  |       "id": 50095635, | ||||||
|  |       "node_id": "MDQ6VXNlcjUwMDk1NjM1", | ||||||
|  |       "avatar_url": "https://avatars.githubusercontent.com/u/50095635?v=4", | ||||||
|  |       "gravatar_id": "", | ||||||
|  |       "url": "https://api.github.com/users/JohnRTitor", | ||||||
|  |       "html_url": "https://github.com/JohnRTitor", | ||||||
|  |       "followers_url": "https://api.github.com/users/JohnRTitor/followers", | ||||||
|  |       "following_url": "https://api.github.com/users/JohnRTitor/following{/other_user}", | ||||||
|  |       "gists_url": "https://api.github.com/users/JohnRTitor/gists{/gist_id}", | ||||||
|  |       "starred_url": "https://api.github.com/users/JohnRTitor/starred{/owner}{/repo}", | ||||||
|  |       "subscriptions_url": "https://api.github.com/users/JohnRTitor/subscriptions", | ||||||
|  |       "organizations_url": "https://api.github.com/users/JohnRTitor/orgs", | ||||||
|  |       "repos_url": "https://api.github.com/users/JohnRTitor/repos", | ||||||
|  |       "events_url": "https://api.github.com/users/JohnRTitor/events{/privacy}", | ||||||
|  |       "received_events_url": "https://api.github.com/users/JohnRTitor/received_events", | ||||||
|  |       "type": "User", | ||||||
|  |       "site_admin": false | ||||||
|  |     }, | ||||||
|  |     "committer": { | ||||||
|  |       "login": "web-flow", | ||||||
|  |       "id": 19864447, | ||||||
|  |       "node_id": "MDQ6VXNlcjE5ODY0NDQ3", | ||||||
|  |       "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", | ||||||
|  |       "gravatar_id": "", | ||||||
|  |       "url": "https://api.github.com/users/web-flow", | ||||||
|  |       "html_url": "https://github.com/web-flow", | ||||||
|  |       "followers_url": "https://api.github.com/users/web-flow/followers", | ||||||
|  |       "following_url": "https://api.github.com/users/web-flow/following{/other_user}", | ||||||
|  |       "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", | ||||||
|  |       "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", | ||||||
|  |       "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", | ||||||
|  |       "organizations_url": "https://api.github.com/users/web-flow/orgs", | ||||||
|  |       "repos_url": "https://api.github.com/users/web-flow/repos", | ||||||
|  |       "events_url": "https://api.github.com/users/web-flow/events{/privacy}", | ||||||
|  |       "received_events_url": "https://api.github.com/users/web-flow/received_events", | ||||||
|  |       "type": "User", | ||||||
|  |       "site_admin": false | ||||||
|  |     }, | ||||||
|  |     "parents": [ | ||||||
|  |       { | ||||||
|  |         "sha": "674acd883193175de91d37a6b3ea8c814d12c8bb", | ||||||
|  |         "url": "https://api.github.com/repos/NixOS/nixpkgs/commits/674acd883193175de91d37a6b3ea8c814d12c8bb", | ||||||
|  |         "html_url": "https://github.com/NixOS/nixpkgs/commit/674acd883193175de91d37a6b3ea8c814d12c8bb" | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         "sha": "e229318f7d34f4988a815e6d10b8fb0f7e0e2974", | ||||||
|  |         "url": "https://api.github.com/repos/NixOS/nixpkgs/commits/e229318f7d34f4988a815e6d10b8fb0f7e0e2974", | ||||||
|  |         "html_url": "https://github.com/NixOS/nixpkgs/commit/e229318f7d34f4988a815e6d10b8fb0f7e0e2974" | ||||||
|  |       } | ||||||
|  |     ] | ||||||
|  |   }, | ||||||
|  |   "merge_base_commit": { | ||||||
|  |     "sha": "27e30d177e57d912d614c88c622dcfdb2e6e6515", | ||||||
|  |     "node_id": "C_kwDOAEVQ_NoAKDI3ZTMwZDE3N2U1N2Q5MTJkNjE0Yzg4YzYyMmRjZmRiMmU2ZTY1MTU", | ||||||
|  |     "commit": { | ||||||
|  |       "author": { | ||||||
|  |         "name": "nixpkgs-merge-bot[bot]", | ||||||
|  |         "email": "148217876+nixpkgs-merge-bot[bot]@users.noreply.github.com", | ||||||
|  |         "date": "2024-10-01T17:15:20Z" | ||||||
|  |       }, | ||||||
|  |       "committer": { | ||||||
|  |         "name": "GitHub", | ||||||
|  |         "email": "noreply@github.com", | ||||||
|  |         "date": "2024-10-01T17:15:20Z" | ||||||
|  |       }, | ||||||
|  |       "message": "fflogs: 8.13.5 -> 8.14.0 (#344409)", | ||||||
|  |       "tree": { | ||||||
|  |         "sha": "209d35171564896577260569f6da7d444d22435d", | ||||||
|  |         "url": "https://api.github.com/repos/NixOS/nixpkgs/git/trees/209d35171564896577260569f6da7d444d22435d" | ||||||
|  |       }, | ||||||
|  |       "url": "https://api.github.com/repos/NixOS/nixpkgs/git/commits/27e30d177e57d912d614c88c622dcfdb2e6e6515", | ||||||
|  |       "comment_count": 0, | ||||||
|  |       "verification": { | ||||||
|  |         "verified": true, | ||||||
|  |         "reason": "valid", | ||||||
|  |         "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJm/C4oCRC1aQ7uu5UhlAAAqUMQAINLlEPM+qnZU0Tb+7sJW/Ww\nu7SViLn6rH2EzZSVxS4DBD/phRm2wmQyjmVRpYMkRFsUQQFLQBjA5oPfzlT+frej\nNCHADxJ8h27xfV3mi40hJkWaC++ssuElh2ZYoyC9wC1yuViO44tuDQKapt6ROQIG\n8Wrg10RN7FBjd5Mb87NBOlSamiIdwobnQUBFCN3MweZ7i7CiuSq2ShKKyEy1KZIn\nH1GVV6rSkRXS0uN9s62uiISSVsvS88RpIMES83Z+fh8v6C+gw6fhUOIP0fLSVogi\neYAB3btJMCryvam7r7gfDDn2yQ6gxlpQYRDgVoK1sLeXg5hy4ouzykkrxvBbvgFd\nGl1eOePkRX+Pz5dPBIYON6QkhgEq6Ysnk4Z7FKvCmXpzDD8Yu0DWWMh65gzMXl9n\nFtThPLEurDXtZoxGnTmqD5MgNpYdH+NgLGH7ml69TinkgkRfvNeDeScmECydBnwN\n/4WTVXCzr6O0sER2MOd3Lb+LjOcymegzLnkySzvCousB2O2viVet9xs2D8QhD1LW\n9eiWfPNsuoC4xjBk/4DPmw0aSjfFiueVudG8cHg0+QxYMnbCVb3kBbjaPTmDTj8U\n/c8Eni7wIp7KEquEJTIh9Uq0thloNk/wgqY9Hj9XErcuyWZCmcB3CqIm2ZuRk9Bh\neHggC9G9VXULWzRj2OvC\n=G9Lq\n-----END PGP SIGNATURE-----\n", | ||||||
|  |         "payload": "tree 209d35171564896577260569f6da7d444d22435d\nparent 9133b9f5554437083a6618581eeae88c53593b0d\nparent c914c30b5b9f65577b83cf0b84a01e46fa1ddf96\nauthor nixpkgs-merge-bot[bot] <148217876+nixpkgs-merge-bot[bot]@users.noreply.github.com> 1727802920 +0000\ncommitter GitHub <noreply@github.com> 1727802920 +0000\n\nfflogs: 8.13.5 -> 8.14.0 (#344409)\n\n" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "url": "https://api.github.com/repos/NixOS/nixpkgs/commits/27e30d177e57d912d614c88c622dcfdb2e6e6515", | ||||||
|  |     "html_url": "https://github.com/NixOS/nixpkgs/commit/27e30d177e57d912d614c88c622dcfdb2e6e6515", | ||||||
|  |     "comments_url": "https://api.github.com/repos/NixOS/nixpkgs/commits/27e30d177e57d912d614c88c622dcfdb2e6e6515/comments", | ||||||
|  |     "author": { | ||||||
|  |       "login": "nixpkgs-merge-bot[bot]", | ||||||
|  |       "id": 148217876, | ||||||
|  |       "node_id": "BOT_kgDOCNWgFA", | ||||||
|  |       "avatar_url": "https://avatars.githubusercontent.com/in/409421?v=4", | ||||||
|  |       "gravatar_id": "", | ||||||
|  |       "url": "https://api.github.com/users/nixpkgs-merge-bot%5Bbot%5D", | ||||||
|  |       "html_url": "https://github.com/apps/nixpkgs-merge-bot", | ||||||
|  |       "followers_url": "https://api.github.com/users/nixpkgs-merge-bot%5Bbot%5D/followers", | ||||||
|  |       "following_url": "https://api.github.com/users/nixpkgs-merge-bot%5Bbot%5D/following{/other_user}", | ||||||
|  |       "gists_url": "https://api.github.com/users/nixpkgs-merge-bot%5Bbot%5D/gists{/gist_id}", | ||||||
|  |       "starred_url": "https://api.github.com/users/nixpkgs-merge-bot%5Bbot%5D/starred{/owner}{/repo}", | ||||||
|  |       "subscriptions_url": "https://api.github.com/users/nixpkgs-merge-bot%5Bbot%5D/subscriptions", | ||||||
|  |       "organizations_url": "https://api.github.com/users/nixpkgs-merge-bot%5Bbot%5D/orgs", | ||||||
|  |       "repos_url": "https://api.github.com/users/nixpkgs-merge-bot%5Bbot%5D/repos", | ||||||
|  |       "events_url": "https://api.github.com/users/nixpkgs-merge-bot%5Bbot%5D/events{/privacy}", | ||||||
|  |       "received_events_url": "https://api.github.com/users/nixpkgs-merge-bot%5Bbot%5D/received_events", | ||||||
|  |       "type": "Bot", | ||||||
|  |       "site_admin": false | ||||||
|  |     }, | ||||||
|  |     "committer": { | ||||||
|  |       "login": "web-flow", | ||||||
|  |       "id": 19864447, | ||||||
|  |       "node_id": "MDQ6VXNlcjE5ODY0NDQ3", | ||||||
|  |       "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4", | ||||||
|  |       "gravatar_id": "", | ||||||
|  |       "url": "https://api.github.com/users/web-flow", | ||||||
|  |       "html_url": "https://github.com/web-flow", | ||||||
|  |       "followers_url": "https://api.github.com/users/web-flow/followers", | ||||||
|  |       "following_url": "https://api.github.com/users/web-flow/following{/other_user}", | ||||||
|  |       "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", | ||||||
|  |       "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", | ||||||
|  |       "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", | ||||||
|  |       "organizations_url": "https://api.github.com/users/web-flow/orgs", | ||||||
|  |       "repos_url": "https://api.github.com/users/web-flow/repos", | ||||||
|  |       "events_url": "https://api.github.com/users/web-flow/events{/privacy}", | ||||||
|  |       "received_events_url": "https://api.github.com/users/web-flow/received_events", | ||||||
|  |       "type": "User", | ||||||
|  |       "site_admin": false | ||||||
|  |     }, | ||||||
|  |     "parents": [ | ||||||
|  |       { | ||||||
|  |         "sha": "9133b9f5554437083a6618581eeae88c53593b0d", | ||||||
|  |         "url": "https://api.github.com/repos/NixOS/nixpkgs/commits/9133b9f5554437083a6618581eeae88c53593b0d", | ||||||
|  |         "html_url": "https://github.com/NixOS/nixpkgs/commit/9133b9f5554437083a6618581eeae88c53593b0d" | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         "sha": "c914c30b5b9f65577b83cf0b84a01e46fa1ddf96", | ||||||
|  |         "url": "https://api.github.com/repos/NixOS/nixpkgs/commits/c914c30b5b9f65577b83cf0b84a01e46fa1ddf96", | ||||||
|  |         "html_url": "https://github.com/NixOS/nixpkgs/commit/c914c30b5b9f65577b83cf0b84a01e46fa1ddf96" | ||||||
|  |       } | ||||||
|  |     ] | ||||||
|  |   }, | ||||||
|  |   "status": "behind", | ||||||
|  |   "ahead_by": 0, | ||||||
|  |   "behind_by": 795, | ||||||
|  |   "total_commits": 0, | ||||||
|  |   "commits": [ | ||||||
|  |  | ||||||
|  |   ], | ||||||
|  |   "files": [ | ||||||
|  |  | ||||||
|  |   ] | ||||||
|  | } | ||||||
| @@ -3,7 +3,7 @@ import unittest.mock | |||||||
| import requests | import requests | ||||||
| import json | import json | ||||||
|  |  | ||||||
| from nixprstatus.pr import commit_in_branch, pr_merge_status | from nixprstatus.pr import commit_in_branch, pr_merge_status, commits_since | ||||||
|  |  | ||||||
|  |  | ||||||
| def mocked_requests_get(*args, **kwargs): | def mocked_requests_get(*args, **kwargs): | ||||||
| @@ -53,3 +53,12 @@ class TestCommitInBranch(unittest.TestCase): | |||||||
|         self.assertTrue(res) |         self.assertTrue(res) | ||||||
|         res = commit_in_branch(commit_sha, "nixos-24.05") |         res = commit_in_branch(commit_sha, "nixos-24.05") | ||||||
|         self.assertFalse(res) |         self.assertFalse(res) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 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) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user