From 4398237a0d6fb78d9a06193b5b39e9369ee177f4 Mon Sep 17 00:00:00 2001 From: Jon Michael Aanes Date: Tue, 15 Apr 2025 23:39:07 +0200 Subject: [PATCH 1/3] Initial ruff pass --- aider_gitea/__init__.py | 6 ++++-- test/test_solve_issue_in_repository.py | 15 ++++++++++++--- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/aider_gitea/__init__.py b/aider_gitea/__init__.py index c7c6852..2ba421e 100644 --- a/aider_gitea/__init__.py +++ b/aider_gitea/__init__.py @@ -283,8 +283,10 @@ def run_cmd(cmd: list[str], cwd: Path | None = None, check=True) -> bool: result = subprocess.run(cmd, check=check, cwd=cwd) return result.returncode == 0 + SKIP_AIDER = False + def solve_issue_in_repository( args, tmpdirname: Path, @@ -294,7 +296,7 @@ def solve_issue_in_repository( issue_number: str, gitea_client=None, ) -> bool: - logger.info("### %s #####", issue_title) + logger.info('### %s #####', issue_title) repo_url = f'{args.gitea_url}:{args.owner}/{args.repo}.git'.replace( 'https://', @@ -331,7 +333,7 @@ def solve_issue_in_repository( check=False, ) else: - logger.warning("Skipping aider command (for testing)") + logger.warning('Skipping aider command (for testing)') succeeded = True if not succeeded: logger.error('Aider invocation failed for issue #%s', issue_number) diff --git a/test/test_solve_issue_in_repository.py b/test/test_solve_issue_in_repository.py index 0377094..76d1ab2 100644 --- a/test/test_solve_issue_in_repository.py +++ b/test/test_solve_issue_in_repository.py @@ -24,7 +24,11 @@ class TestSolveIssueInRepository: @patch('aider_gitea.push_changes') @patch('subprocess.run') 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 mock_run_cmd.return_value = True @@ -34,7 +38,8 @@ class TestSolveIssueInRepository: mock_subprocess_run.side_effect = [ MagicMock(stdout='abc123\n', returncode=0), # First git rev-parse MagicMock( - stdout='file1.py\nfile2.py\n', returncode=0, + stdout='file1.py\nfile2.py\n', + returncode=0, ), # git diff with changes ] @@ -59,7 +64,11 @@ class TestSolveIssueInRepository: @patch('aider_gitea.push_changes') @patch('subprocess.run') 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 mock_run_cmd.return_value = True -- 2.45.1 From a8a8fbfbbd7dcb96345a9f3f1dc9145d88c5f06b Mon Sep 17 00:00:00 2001 From: "Jon Michael Aanes (aider)" Date: Tue, 15 Apr 2025 23:39:35 +0200 Subject: [PATCH 2/3] feat: Add get_pull_request_comments method to GiteaClient --- aider_gitea/gitea_client.py | 19 ++++++++ test/test_gitea_client_pr_comments.py | 68 +++++++++++++++++++++++++++ 2 files changed, 87 insertions(+) create mode 100644 test/test_gitea_client_pr_comments.py diff --git a/aider_gitea/gitea_client.py b/aider_gitea/gitea_client.py index d392cab..4ea3ccc 100644 --- a/aider_gitea/gitea_client.py +++ b/aider_gitea/gitea_client.py @@ -168,3 +168,22 @@ class GiteaClient: response = self.session.post(url, json=json_data) response.raise_for_status() return response.json() + + def get_pull_request_comments(self, owner: str, repo: str, pull_number: int) -> list[dict]: + """Get comments for a specific pull request. + + Args: + owner (str): Owner of the repository. + repo (str): Name of the repository. + pull_number (int): The pull request number. + + Returns: + list[dict]: A list of comment dictionaries for the pull request. + + Raises: + requests.HTTPError: If the API request fails. + """ + url = f'{self.gitea_url}/repos/{owner}/{repo}/pulls/{pull_number}/comments' + response = self.session.get(url) + response.raise_for_status() + return response.json() diff --git a/test/test_gitea_client_pr_comments.py b/test/test_gitea_client_pr_comments.py new file mode 100644 index 0000000..0bae54b --- /dev/null +++ b/test/test_gitea_client_pr_comments.py @@ -0,0 +1,68 @@ +import pytest +from unittest.mock import patch, MagicMock + +from aider_gitea.gitea_client import GiteaClient + + +class TestGiteaClientPRComments: + def setup_method(self): + """Set up test fixtures.""" + self.client = GiteaClient('https://gitea.example.com', 'fake-token') + self.owner = 'test-owner' + self.repo = 'test-repo' + self.pull_number = 123 + + @patch('requests.Session.get') + def test_get_pull_request_comments(self, mock_get): + """Test retrieving comments for a pull request.""" + # Mock response data + mock_response = MagicMock() + mock_response.json.return_value = [ + { + 'id': 1, + 'body': 'This is a test comment', + 'user': {'login': 'test-user'}, + 'created_at': '2023-01-01T00:00:00Z', + }, + { + 'id': 2, + 'body': 'Another test comment', + 'user': {'login': 'another-user'}, + 'created_at': '2023-01-02T00:00:00Z', + }, + ] + mock_get.return_value = mock_response + + # Call the method + comments = self.client.get_pull_request_comments(self.owner, self.repo, self.pull_number) + + # Verify the request was made correctly + mock_get.assert_called_once_with( + f'{self.client.gitea_url}/repos/{self.owner}/{self.repo}/pulls/{self.pull_number}/comments' + ) + + # Verify the response was processed correctly + assert len(comments) == 2 + assert comments[0]['id'] == 1 + assert comments[0]['body'] == 'This is a test comment' + assert comments[1]['id'] == 2 + assert comments[1]['body'] == 'Another test comment' + + @patch('requests.Session.get') + def test_get_pull_request_comments_empty(self, mock_get): + """Test retrieving comments for a pull request with no comments.""" + # Mock response data + mock_response = MagicMock() + mock_response.json.return_value = [] + mock_get.return_value = mock_response + + # Call the method + comments = self.client.get_pull_request_comments(self.owner, self.repo, self.pull_number) + + # Verify the request was made correctly + mock_get.assert_called_once_with( + f'{self.client.gitea_url}/repos/{self.owner}/{self.repo}/pulls/{self.pull_number}/comments' + ) + + # Verify the response was processed correctly + assert len(comments) == 0 -- 2.45.1 From 2a365a9a59424eac67068746607d4aca09d0219b Mon Sep 17 00:00:00 2001 From: Jon Michael Aanes Date: Tue, 15 Apr 2025 23:39:40 +0200 Subject: [PATCH 3/3] Ruff after aider --- aider_gitea/gitea_client.py | 4 +++- test/test_gitea_client_pr_comments.py | 15 +++++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/aider_gitea/gitea_client.py b/aider_gitea/gitea_client.py index 4ea3ccc..bf98eee 100644 --- a/aider_gitea/gitea_client.py +++ b/aider_gitea/gitea_client.py @@ -169,7 +169,9 @@ class GiteaClient: response.raise_for_status() return response.json() - def get_pull_request_comments(self, owner: str, repo: str, pull_number: int) -> list[dict]: + def get_pull_request_comments( + self, owner: str, repo: str, pull_number: int, + ) -> list[dict]: """Get comments for a specific pull request. Args: diff --git a/test/test_gitea_client_pr_comments.py b/test/test_gitea_client_pr_comments.py index 0bae54b..23c1e27 100644 --- a/test/test_gitea_client_pr_comments.py +++ b/test/test_gitea_client_pr_comments.py @@ -1,5 +1,4 @@ -import pytest -from unittest.mock import patch, MagicMock +from unittest.mock import MagicMock, patch from aider_gitea.gitea_client import GiteaClient @@ -34,11 +33,13 @@ class TestGiteaClientPRComments: mock_get.return_value = mock_response # Call the method - comments = self.client.get_pull_request_comments(self.owner, self.repo, self.pull_number) + comments = self.client.get_pull_request_comments( + self.owner, self.repo, self.pull_number, + ) # Verify the request was made correctly mock_get.assert_called_once_with( - f'{self.client.gitea_url}/repos/{self.owner}/{self.repo}/pulls/{self.pull_number}/comments' + f'{self.client.gitea_url}/repos/{self.owner}/{self.repo}/pulls/{self.pull_number}/comments', ) # Verify the response was processed correctly @@ -57,11 +58,13 @@ class TestGiteaClientPRComments: mock_get.return_value = mock_response # Call the method - comments = self.client.get_pull_request_comments(self.owner, self.repo, self.pull_number) + comments = self.client.get_pull_request_comments( + self.owner, self.repo, self.pull_number, + ) # Verify the request was made correctly mock_get.assert_called_once_with( - f'{self.client.gitea_url}/repos/{self.owner}/{self.repo}/pulls/{self.pull_number}/comments' + f'{self.client.gitea_url}/repos/{self.owner}/{self.repo}/pulls/{self.pull_number}/comments', ) # Verify the response was processed correctly -- 2.45.1