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