From 44104215a2ba672c462a88a5a952560b86875b65 Mon Sep 17 00:00:00 2001 From: "Jon Michael Aanes (aider)" Date: Tue, 15 Apr 2025 23:41:18 +0200 Subject: [PATCH] feat: Add support for assigning reviewers and assignees to pull requests --- aider_gitea/__init__.py | 2 ++ aider_gitea/__main__.py | 18 +++++++++++++++++ test/test_main_args.py | 43 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 63 insertions(+) create mode 100644 test/test_main_args.py diff --git a/aider_gitea/__init__.py b/aider_gitea/__init__.py index 2ba421e..1eb9d98 100644 --- a/aider_gitea/__init__.py +++ b/aider_gitea/__init__.py @@ -411,6 +411,8 @@ def handle_issues(args, client, seen_issues_db): issue_description, issue_number, client, + reviewers=args.reviewers, + assignees=args.assignees, ) if solved: diff --git a/aider_gitea/__main__.py b/aider_gitea/__main__.py index df028f5..e83abc3 100644 --- a/aider_gitea/__main__.py +++ b/aider_gitea/__main__.py @@ -22,6 +22,8 @@ class AiderArgs: owner: str repo: str base_branch: str + reviewers: list[str] = None + assignees: list[str] = None def parse_args(): @@ -54,6 +56,16 @@ def parse_args(): default=300, help='Interval in seconds between checks in daemon mode (default: 300)', ) + parser.add_argument( + '--reviewers', + type=str, + help='Comma-separated list of usernames to assign as reviewers for pull requests', + ) + parser.add_argument( + '--assignees', + type=str, + help='Comma-separated list of usernames to assign as assignees for pull requests', + ) return parser.parse_args() @@ -72,11 +84,17 @@ def main(): while True: logger.info('Checking for new issues...') for repo in repositories: + # Parse reviewers and assignees from comma-separated strings to lists + reviewers = args.reviewers.split(',') if args.reviewers else None + assignees = args.assignees.split(',') if args.assignees else None + aider_args = AiderArgs( gitea_url=args.gitea_url, owner=args.owner, repo=repo, base_branch=args.base_branch, + reviewers=reviewers, + assignees=assignees, ) handle_issues(aider_args, client, seen_issues_db) del repo diff --git a/test/test_main_args.py b/test/test_main_args.py new file mode 100644 index 0000000..7e5558d --- /dev/null +++ b/test/test_main_args.py @@ -0,0 +1,43 @@ +import pytest +from unittest.mock import patch, MagicMock +import argparse + +from aider_gitea.__main__ import parse_args + + +def test_parse_args_with_reviewers_and_assignees(): + """Test that reviewers and assignees arguments are correctly parsed.""" + test_args = [ + '--gitea-url', 'https://gitea.example.com', + '--owner', 'test-owner', + '--repo', 'test-repo', + '--reviewers', 'user1,user2', + '--assignees', 'user3,user4' + ] + + with patch('sys.argv', ['aider_gitea'] + test_args): + args = parse_args() + + assert args.gitea_url == 'https://gitea.example.com' + assert args.owner == 'test-owner' + assert args.repo == 'test-repo' + assert args.reviewers == 'user1,user2' + assert args.assignees == 'user3,user4' + + +def test_parse_args_without_reviewers_and_assignees(): + """Test that the parser works without reviewers and assignees.""" + test_args = [ + '--gitea-url', 'https://gitea.example.com', + '--owner', 'test-owner', + '--repo', 'test-repo' + ] + + with patch('sys.argv', ['aider_gitea'] + test_args): + args = parse_args() + + assert args.gitea_url == 'https://gitea.example.com' + assert args.owner == 'test-owner' + assert args.repo == 'test-repo' + assert args.reviewers is None + assert args.assignees is None