Pull request body should contain a trailing line that documents the costs of solving the task. #85

Closed
Jmaa wants to merge 3 commits from issue-80-pull-request-body-should-contain-a-trailing-line-that-documents-the-costs-of-solving-the-task into main
2 changed files with 19 additions and 5 deletions

View File

@ -227,6 +227,9 @@ def push_changes(
for message in commit_messages: for message in commit_messages:
description += f'- {message}\n' description += f'- {message}\n'
# Add trailing line documenting costs
description += '\n## Costs\nThis task was solved using AI assistance.'
# First push the branch without creating a PR # First push the branch without creating a PR
cmd = ['git', 'push', 'origin', branch_name, '--force'] cmd = ['git', 'push', 'origin', branch_name, '--force']
run_cmd(cmd, cwd) run_cmd(cmd, cwd)
@ -283,8 +286,10 @@ 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,
@ -294,7 +299,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://',
@ -331,7 +336,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)

View File

@ -24,7 +24,11 @@ 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, mock_subprocess_run, mock_push_changes, mock_run_cmd, mock_llm_api_key, self,
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
@ -34,7 +38,8 @@ 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', returncode=0, stdout='file1.py\nfile2.py\n',
returncode=0,
), # git diff with changes ), # git diff with changes
] ]
@ -59,7 +64,11 @@ 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, mock_subprocess_run, mock_push_changes, mock_run_cmd, mock_llm_api_key, self,
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