Pull request body should contain a trailing line that documents the costs of solving the task. #85
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue
Block a user