has_commits_on_branch should use get_commit_messages internally #82
|
@ -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
|
||||||
|
|
||||||
|
|
54
test/test_has_commits_on_branch.py
Normal file
54
test/test_has_commits_on_branch.py
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
from pathlib import Path
|
||||||
|
from unittest.mock import patch
|
||||||
|
|
||||||
|
from aider_gitea import has_commits_on_branch
|
||||||
|
|
||||||
|
|
||||||
|
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
|
||||||
|
)
|
Loading…
Reference in New Issue
Block a user