Skip to content

Commit

Permalink
Fix pr #5232: Fix issue #5219: Feature: PR Review
Browse files Browse the repository at this point in the history
  • Loading branch information
openhands-agent committed Nov 26, 2024
1 parent dc0b524 commit 5e3bd51
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 9 deletions.
22 changes: 16 additions & 6 deletions openhands/resolver/review_pr.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@
import argparse
import os
import pathlib
import subprocess
from typing import Any

import jinja2
import litellm
Expand All @@ -28,7 +26,9 @@ def get_pr_diff(owner: str, repo: str, pr_number: int, token: str) -> str:
return response.text


def post_review_comment(owner: str, repo: str, pr_number: int, token: str, review: str) -> None:
def post_review_comment(
owner: str, repo: str, pr_number: int, token: str, review: str
) -> None:
"""Post a review comment on a pull request."""
url = f'https://api.github.com/repos/{owner}/{repo}/issues/{pr_number}/comments'
headers = {
Expand Down Expand Up @@ -62,7 +62,9 @@ def review_pr(
"""
# Create output directory
pathlib.Path(output_dir).mkdir(parents=True, exist_ok=True)
pathlib.Path(os.path.join(output_dir, 'infer_logs')).mkdir(parents=True, exist_ok=True)
pathlib.Path(os.path.join(output_dir, 'infer_logs')).mkdir(
parents=True, exist_ok=True
)
logger.info(f'Using output directory: {output_dir}')

# Get PR handler
Expand Down Expand Up @@ -106,8 +108,12 @@ def review_pr(
def main() -> None:
"""Main function."""
parser = argparse.ArgumentParser(description='Review a pull request.')
parser.add_argument('--repo', type=str, required=True, help='Repository in owner/repo format')
parser.add_argument('--issue-number', type=int, required=True, help='PR number to review')
parser.add_argument(
'--repo', type=str, required=True, help='Repository in owner/repo format'
)
parser.add_argument(
'--issue-number', type=int, required=True, help='PR number to review'
)
parser.add_argument('--issue-type', type=str, required=True, help='Issue type (pr)')

args = parser.parse_args()
Expand All @@ -126,13 +132,17 @@ def main() -> None:
owner, repo = args.repo.split('/')

# Configure LLM
assert llm_model is not None # For type checker
assert llm_api_key is not None # For type checker
llm_config = LLMConfig(
model=llm_model,
api_key=llm_api_key,
base_url=llm_base_url,
)

# Review PR
assert token is not None # For type checker
assert username is not None # For type checker
review_pr(
owner=owner,
repo=repo,
Expand Down
9 changes: 6 additions & 3 deletions tests/unit/test_review_pr.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
"""Tests for the review_pr module."""

import os
import tempfile
from unittest.mock import MagicMock, patch

Expand Down Expand Up @@ -76,7 +75,9 @@ def test_review_pr(mock_pr: GithubIssue, mock_llm_config: LLMConfig) -> None:
# Setup mocks
mock_handler.return_value.get_converted_issues.return_value = [mock_pr]
mock_get_diff.return_value = 'test diff'
mock_completion.return_value.choices = [MagicMock(message=MagicMock(content='test review'))]
mock_completion.return_value.choices = [
MagicMock(message=MagicMock(content='test review'))
]

# Run review
review_pr(
Expand All @@ -93,4 +94,6 @@ def test_review_pr(mock_pr: GithubIssue, mock_llm_config: LLMConfig) -> None:
mock_handler.assert_called_once_with('owner', 'repo', 'token')
mock_get_diff.assert_called_once_with('owner', 'repo', 1, 'token')
mock_completion.assert_called_once()
mock_post_comment.assert_called_once_with('owner', 'repo', 1, 'token', 'test review')
mock_post_comment.assert_called_once_with(
'owner', 'repo', 1, 'token', 'test review'
)

0 comments on commit 5e3bd51

Please sign in to comment.