File: test_git_diff_file.py

package info (click to toggle)
diff-cover 10.2.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,256 kB
  • sloc: python: 6,452; xml: 218; cpp: 18; sh: 12; makefile: 10
file content (72 lines) | stat: -rw-r--r-- 1,747 bytes parent folder | download | duplicates (2)
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"