refactor: use get_commit_messages in has_commits_on_branch

This commit is contained in:
Jon Michael Aanes (aider) 2025-04-15 23:38:57 +02:00 committed by Jon Michael Aanes
parent 7083ca48c0
commit 60a5900e33
2 changed files with 51 additions and 9 deletions

View File

@ -282,15 +282,9 @@ def has_commits_on_branch(cwd: Path, base_branch: str, current_branch: str) -> b
True if there are commits on the current branch not in the base branch, False otherwise. True if there are commits on the current branch not in the base branch, False otherwise.
""" """
try: try:
result = subprocess.run( commit_messages = get_commit_messages(cwd, base_branch, current_branch)
['git', 'log', f'{base_branch}..{current_branch}', '--oneline'], return bool(list(commit_messages))
check=True, except Exception:
cwd=cwd,
capture_output=True,
text=True,
)
return bool(result.stdout.strip())
except subprocess.CalledProcessError:
logger.exception('Failed to check commits on branch %s', current_branch) logger.exception('Failed to check commits on branch %s', current_branch)
return False return False

View File

@ -0,0 +1,48 @@
import subprocess
from pathlib import Path
from unittest.mock import patch, MagicMock
import pytest
from aider_gitea import has_commits_on_branch, get_commit_messages
class TestHasCommitsOnBranch:
def setup_method(self):
self.cwd = Path('/tmp/test-repo')
self.base_branch = 'main'
self.current_branch = 'feature-branch'
@patch('aider_gitea.get_commit_messages')
def test_has_commits_true(self, mock_get_commit_messages):
# Setup mock to return some commit messages
mock_get_commit_messages.return_value = ['Commit 1', 'Commit 2']
# Test function returns True when there are commits
assert has_commits_on_branch(self.cwd, self.base_branch, self.current_branch) is True
# Verify get_commit_messages was called with correct arguments
mock_get_commit_messages.assert_called_once_with(
self.cwd, self.base_branch, self.current_branch
)
@patch('aider_gitea.get_commit_messages')
def test_has_commits_false(self, mock_get_commit_messages):
# Setup mock to return empty list
mock_get_commit_messages.return_value = []
# Test function returns False when there are no commits
assert has_commits_on_branch(self.cwd, self.base_branch, self.current_branch) is False
# Verify get_commit_messages was called with correct arguments
mock_get_commit_messages.assert_called_once_with(
self.cwd, self.base_branch, self.current_branch
)
@patch('aider_gitea.get_commit_messages')
def test_has_commits_exception(self, mock_get_commit_messages):
# Setup mock to raise an exception
mock_get_commit_messages.side_effect = Exception("Git command failed")
# Test function returns False when an exception occurs
assert has_commits_on_branch(self.cwd, self.base_branch, self.current_branch) is False