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.
"""
try:
result = subprocess.run(
['git', 'log', f'{base_branch}..{current_branch}', '--oneline'],
check=True,
cwd=cwd,
capture_output=True,
text=True,
)
return bool(result.stdout.strip())
except subprocess.CalledProcessError:
commit_messages = get_commit_messages(cwd, base_branch, current_branch)
return bool(list(commit_messages))
except Exception:
logger.exception('Failed to check commits on branch %s', current_branch)
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