Compare commits
No commits in common. "1371343ff494a233df05bf799643b7bd525ecc11" and "00490679195bc1d5eabae7e5430ff8efb80d69f8" have entirely different histories.
1371343ff4
...
0049067919
|
@ -283,10 +283,8 @@ def run_cmd(cmd: list[str], cwd: Path | None = None, check=True) -> bool:
|
||||||
result = subprocess.run(cmd, check=check, cwd=cwd)
|
result = subprocess.run(cmd, check=check, cwd=cwd)
|
||||||
return result.returncode == 0
|
return result.returncode == 0
|
||||||
|
|
||||||
|
|
||||||
SKIP_AIDER = False
|
SKIP_AIDER = False
|
||||||
|
|
||||||
|
|
||||||
def solve_issue_in_repository(
|
def solve_issue_in_repository(
|
||||||
args,
|
args,
|
||||||
tmpdirname: Path,
|
tmpdirname: Path,
|
||||||
|
@ -296,7 +294,7 @@ def solve_issue_in_repository(
|
||||||
issue_number: str,
|
issue_number: str,
|
||||||
gitea_client=None,
|
gitea_client=None,
|
||||||
) -> bool:
|
) -> bool:
|
||||||
logger.info('### %s #####', issue_title)
|
logger.info("### %s #####", issue_title)
|
||||||
|
|
||||||
repo_url = f'{args.gitea_url}:{args.owner}/{args.repo}.git'.replace(
|
repo_url = f'{args.gitea_url}:{args.owner}/{args.repo}.git'.replace(
|
||||||
'https://',
|
'https://',
|
||||||
|
@ -333,7 +331,7 @@ def solve_issue_in_repository(
|
||||||
check=False,
|
check=False,
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
logger.warning('Skipping aider command (for testing)')
|
logger.warning("Skipping aider command (for testing)")
|
||||||
succeeded = True
|
succeeded = True
|
||||||
if not succeeded:
|
if not succeeded:
|
||||||
logger.error('Aider invocation failed for issue #%s', issue_number)
|
logger.error('Aider invocation failed for issue #%s', issue_number)
|
||||||
|
@ -411,8 +409,6 @@ def handle_issues(args, client, seen_issues_db):
|
||||||
issue_description,
|
issue_description,
|
||||||
issue_number,
|
issue_number,
|
||||||
client,
|
client,
|
||||||
reviewers=args.reviewers,
|
|
||||||
assignees=args.assignees,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
if solved:
|
if solved:
|
||||||
|
|
|
@ -22,8 +22,6 @@ class AiderArgs:
|
||||||
owner: str
|
owner: str
|
||||||
repo: str
|
repo: str
|
||||||
base_branch: str
|
base_branch: str
|
||||||
reviewers: list[str] = None
|
|
||||||
assignees: list[str] = None
|
|
||||||
|
|
||||||
|
|
||||||
def parse_args():
|
def parse_args():
|
||||||
|
@ -56,16 +54,6 @@ def parse_args():
|
||||||
default=300,
|
default=300,
|
||||||
help='Interval in seconds between checks in daemon mode (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()
|
return parser.parse_args()
|
||||||
|
|
||||||
|
|
||||||
|
@ -84,17 +72,11 @@ def main():
|
||||||
while True:
|
while True:
|
||||||
logger.info('Checking for new issues...')
|
logger.info('Checking for new issues...')
|
||||||
for repo in repositories:
|
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(
|
aider_args = AiderArgs(
|
||||||
gitea_url=args.gitea_url,
|
gitea_url=args.gitea_url,
|
||||||
owner=args.owner,
|
owner=args.owner,
|
||||||
repo=repo,
|
repo=repo,
|
||||||
base_branch=args.base_branch,
|
base_branch=args.base_branch,
|
||||||
reviewers=reviewers,
|
|
||||||
assignees=assignees,
|
|
||||||
)
|
)
|
||||||
handle_issues(aider_args, client, seen_issues_db)
|
handle_issues(aider_args, client, seen_issues_db)
|
||||||
del repo
|
del repo
|
||||||
|
|
|
@ -1,49 +0,0 @@
|
||||||
from unittest.mock import patch
|
|
||||||
|
|
||||||
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
|
|
|
@ -24,11 +24,7 @@ class TestSolveIssueInRepository:
|
||||||
@patch('aider_gitea.push_changes')
|
@patch('aider_gitea.push_changes')
|
||||||
@patch('subprocess.run')
|
@patch('subprocess.run')
|
||||||
def test_solve_issue_with_aider_changes(
|
def test_solve_issue_with_aider_changes(
|
||||||
self,
|
self, mock_subprocess_run, mock_push_changes, mock_run_cmd, mock_llm_api_key,
|
||||||
mock_subprocess_run,
|
|
||||||
mock_push_changes,
|
|
||||||
mock_run_cmd,
|
|
||||||
mock_llm_api_key,
|
|
||||||
):
|
):
|
||||||
# Setup mocks
|
# Setup mocks
|
||||||
mock_run_cmd.return_value = True
|
mock_run_cmd.return_value = True
|
||||||
|
@ -38,8 +34,7 @@ class TestSolveIssueInRepository:
|
||||||
mock_subprocess_run.side_effect = [
|
mock_subprocess_run.side_effect = [
|
||||||
MagicMock(stdout='abc123\n', returncode=0), # First git rev-parse
|
MagicMock(stdout='abc123\n', returncode=0), # First git rev-parse
|
||||||
MagicMock(
|
MagicMock(
|
||||||
stdout='file1.py\nfile2.py\n',
|
stdout='file1.py\nfile2.py\n', returncode=0,
|
||||||
returncode=0,
|
|
||||||
), # git diff with changes
|
), # git diff with changes
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -64,11 +59,7 @@ class TestSolveIssueInRepository:
|
||||||
@patch('aider_gitea.push_changes')
|
@patch('aider_gitea.push_changes')
|
||||||
@patch('subprocess.run')
|
@patch('subprocess.run')
|
||||||
def test_solve_issue_without_aider_changes(
|
def test_solve_issue_without_aider_changes(
|
||||||
self,
|
self, mock_subprocess_run, mock_push_changes, mock_run_cmd, mock_llm_api_key,
|
||||||
mock_subprocess_run,
|
|
||||||
mock_push_changes,
|
|
||||||
mock_run_cmd,
|
|
||||||
mock_llm_api_key,
|
|
||||||
):
|
):
|
||||||
# Setup mocks
|
# Setup mocks
|
||||||
mock_run_cmd.return_value = True
|
mock_run_cmd.return_value = True
|
||||||
|
|
Loading…
Reference in New Issue
Block a user