1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
# pylint: disable=missing-function-docstring
"""Test for diff_cover.git_diff.GitDiffFileTool"""
import pytest
from diff_cover.git_diff import GitDiffFileTool
@pytest.fixture
def mock_file(mocker):
def _inner(file_content):
mock_open = mocker.mock_open(read_data=file_content)
mocker.patch("builtins.open", mock_open)
return _inner
@pytest.fixture
def diff_tool():
def _inner(file):
return GitDiffFileTool(file)
return _inner
def test_diff_file_not_found(mocker, diff_tool):
mocker.patch("builtins.open", side_effect=IOError)
_diff_tool = diff_tool("non_existent_diff_file.txt")
with pytest.raises(ValueError) as excinfo:
_diff_tool.diff_committed()
assert (
f"Could not read the diff file. Make sure '{_diff_tool.diff_file_path}' exists?"
in str(excinfo.value)
)
assert _diff_tool.diff_file_path == "non_existent_diff_file.txt"
def test_large_diff_file(mock_file, diff_tool):
large_diff = "diff --git a/file1 b/file2\n" * 1000000
mock_file(large_diff)
_diff_tool = diff_tool("large_diff_file.txt")
assert _diff_tool.diff_committed() == large_diff
assert _diff_tool.diff_file_path == "large_diff_file.txt"
def test_diff_committed(mock_file, diff_tool):
diff = "diff --git a/file1 b/file2\n"
mock_file(diff)
_diff_tool = diff_tool("diff_file.txt")
assert _diff_tool.diff_committed() == diff
assert _diff_tool.diff_file_path == "diff_file.txt"
def test_empty_diff_file(mock_file, diff_tool):
empty_diff = ""
mock_file(empty_diff)
_diff_tool = diff_tool("empty_diff.txt")
assert _diff_tool.diff_committed() == empty_diff
assert _diff_tool.diff_file_path == "empty_diff.txt"
|