mcp-server-code-assist

by abhishekbhakat
Verified
  • tests
import pytest from git import Repo from mcp_server_code_assist.tools.git_tools import GitTools @pytest.fixture def repo_path(tmp_path): repo = tmp_path / "test_repo" repo.mkdir() Repo.init(repo) return repo @pytest.fixture def git_tools(repo_path): return GitTools([str(repo_path)]) class TestGitTools: def test_init_invalid_path(self, tmp_path): with pytest.raises(ValueError): GitTools([str(tmp_path / "nonexistent")]) @pytest.mark.asyncio async def test_status(self, git_tools, repo_path): (repo_path / "test.txt").write_text("test") status = await git_tools.status(str(repo_path)) assert "Untracked files:" in status assert "test.txt" in status @pytest.mark.asyncio async def test_diff(self, git_tools, repo_path): repo = Repo(repo_path) file_path = repo_path / "test.txt" file_path.write_text("test") repo.index.add(["test.txt"]) repo.index.commit("initial") file_path.write_text("modified") diff = await git_tools.diff(str(repo_path)) assert "-test" in diff assert "+modified" in diff @pytest.mark.asyncio async def test_log(self, git_tools, repo_path): repo = Repo(repo_path) (repo_path / "test.txt").write_text("test") repo.index.add(["test.txt"]) repo.index.commit("test commit") log = await git_tools.log(str(repo_path), 1) assert "test commit" in log @pytest.mark.asyncio async def test_show(self, git_tools, repo_path): repo = Repo(repo_path) # Create a test file and commit it (repo_path / "test.txt").write_text("initial content") repo.index.add(["test.txt"]) _ = repo.index.commit("initial commit") # Modify the file and create another commit (repo_path / "test.txt").write_text("modified content") repo.index.add(["test.txt"]) modified_commit = repo.index.commit("modified commit") # Test showing specific commit with diff show_output = await git_tools.show(str(repo_path), modified_commit.hexsha) assert "modified commit" in show_output assert "modified content" in show_output assert "-initial content" in show_output assert "+modified content" in show_output # Test showing commit with format oneline_output = await git_tools.show(str(repo_path), modified_commit.hexsha, format_str="oneline") assert modified_commit.hexsha[:7] in oneline_output assert "modified commit" in oneline_output # Test showing HEAD (latest commit) head_output = await git_tools.show(str(repo_path)) assert "modified commit" in head_output