Пример #1
0
def test_remove_submodule():
    ret = get_file_diff_stats_from_output(REMOVE_SUBMODULE_COMMIT)
    assert ret == [
        FileDiffStat(
            b'.gitmodules',
            [],
            [
                b'[submodule "verifycppbraces"]',
                b'       path = verifycppbraces',
                b'       url = git://github.com/asottile/verifycppbraces.git',
            ],
            Status.ALREADY_EXISTING,
        ),
        FileDiffStat(
            b'verifycppbraces',
            [],
            [],
            Status.DELETED,
            special_file=SpecialFile(
                file_type=SpecialFileType.SUBMODULE,
                added=None,
                removed=b'72053d85133aa854e2762a4b604976da825750fb',
            ),
        ),
    ]
Пример #2
0
def test_removed_and_added():
    ret = get_file_diff_stats_from_output(SAMPLE_OUTPUT_MULTIPLE_FILES)
    assert ret == [
        FileDiffStat(
            b'example_config.yaml',
            [b'', b'# Git repo url', b'foo', b'bar'],
            [],
            Status.ADDED,
        ),
        FileDiffStat(
            b'example_config.yaml',
            [],
            [b'', b'# Git repo url', b'foo', b'bar'],
            Status.DELETED,
        ),
    ]
Пример #3
0
def test_simple_base_counter():
    """Smoke test for SimpleLineCounterBase"""
    class TestCounter(SimpleLineCounterBase):
        """This is the test counter!"""

        def should_include_file(self, file_diff_stat):
            return True

        def line_matches_metric(self, line, file_diff_stat):
            return True

    parser = TestCounter()
    info, = parser.get_metrics_info()
    assert info == MetricInfo('TestCounter', 'This is the test counter!')

    input_stats = [
        FileDiffStat(
            'test.py',
            ['a', 'b', 'c'],
            ['d'],
            'this_should_be_ignored',
        ),
    ]

    metric, = parser.get_metrics_from_stat(Commit.blank, input_stats)
    assert metric == Metric('TestCounter', 2)
Пример #4
0
def test_lines_of_code_parser():
    parser = LinesOfCodeParser()
    input_stats = [
        FileDiffStat(b'test.py', [b'a'], [], None),
        FileDiffStat(b'womp.yaml', [b'a', b'b', b'c'], [b'hi'], None),
    ]

    metrics = list(parser.get_metrics_from_stat(Commit.blank, input_stats))

    expected_value = {
        'TotalLinesOfCode': 3,
        'TotalLinesOfCode_Python': 1,
        'TotalLinesOfCode_Yaml': 2,
    }
    for metric in metrics:
        assert metric.value == expected_value.get(metric.name, 0)
Пример #5
0
def test_binary_files():
    ret = get_file_diff_stats_from_output(COMMIT_ENDING_WITH_BINARY_FILES)
    assert ret == [
        FileDiffStat(
            b'htdocs/css/base.css',
            [b'foo'], [],
            Status.ALREADY_EXISTING,
        ),
        FileDiffStat(
            b'htdocs/i/p.gif',
            [], [],
            Status.ADDED,
            special_file=SpecialFile(
                file_type=SpecialFileType.BINARY,
                added=b'htdocs/i/p.gif',
                removed=None,
            ),
        ),
    ]
Пример #6
0
def test_removed_file():
    ret = get_file_diff_stats_from_output(FILE_REMOVED_COMMIT)
    assert ret == [
        FileDiffStat(
            b'example_config.yaml',
            [],
            [b'', b'# Git repo url', b'foo', b'bar'],
            Status.DELETED,
        ),
    ]
def test_submodule_count_detects_ignores_moved():
    parser = SubmoduleCount()
    input_stats = (
        FileDiffStat(
            b'foo', [], [], Status.ALREADY_EXISTING,
            special_file=SpecialFile(SpecialFileType.SUBMODULE, b'br', b'bz'),
        ),
    )

    assert not tuple(parser.get_metrics_from_stat(BLANK_COMMIT, input_stats))
Пример #8
0
def test_curse_words_parser():
    parser = CurseWordsParser()
    input_stats = [
        FileDiffStat(
            b'templates/foo.tmpl',
            [b'#man seriously, f**k cheetah'],
            [],
            None,
        ),
        FileDiffStat(
            b'cmds/foo.py',
            [b"# I'm clean I swear"],
            [],
            None,
        ),
    ]
    metrics = list(parser.get_metrics_from_stat(input_stats))
    assert Metric('TotalCurseWords_Template', 1) in metrics
    assert Metric('TotalCurseWords_Python', 0) in metrics
Пример #9
0
def test_text_line_counter_base():
    class Counter(TextLineCounterBase):
        def text_line_matches_metric(self, line, file_diff_stat):
            return 'foo' in line

    parser = Counter()
    stat = FileDiffStat(b'test.py', [b'hi', b'foo world'], [], Status.ADDED)

    metric, = parser.get_metrics_from_stat(BLANK_COMMIT, (stat, ))
    assert metric == Metric('Counter', 1)
Пример #10
0
def test_lines_in_init():
    parser = Python__init__LineCount()
    input_stats = (FileDiffStat(
        b'testing/__init__.py',
        [b'from .foo import bar'],
        [],
        Status.ADDED,
    ), )
    metric, = parser.get_metrics_from_stat(BLANK_COMMIT, input_stats)
    assert metric == Metric('Python__init__LineCount', 1)
def test_binary_file_count_detects_ignores_moved():
    parser = BinaryFileCount()
    input_stats = [
        FileDiffStat(
            'foo', [], [], Status.ALREADY_EXISTING,
            special_file=SpecialFile(SpecialFileType.BINARY, 'foo', 'foo'),
        ),
    ]

    assert not tuple(parser.get_metrics_from_stat(Commit.blank, input_stats))
Пример #12
0
def test_get_file_diff_stats_from_output():
    ret = get_file_diff_stats_from_output(SAMPLE_OUTPUT)
    assert ret == [
        FileDiffStat(
            b'README.md',
            [b'bar', b'hello world'],
            [b'foo'],
            Status.ALREADY_EXISTING,
        ),
    ]
Пример #13
0
def test_binary_file_count_detects_ignores_moved():
    parser = BinaryFileCount()
    input_stats = (FileDiffStat(
        b'foo',
        [],
        [],
        Status.ALREADY_EXISTING,
        special_file=SpecialFile(SpecialFileType.BINARY, b'foo', b'foo'),
    ), )

    assert not tuple(parser.get_metrics_from_stat(BLANK_COMMIT, input_stats))
def test_submodule_count_detects_added():
    parser = SubmoduleCount()
    input_stats = (
        FileDiffStat(
            b'foo', [], [], Status.ADDED,
            special_file=SpecialFile(SpecialFileType.SUBMODULE, b'bar', None),
        ),
    )

    metric, = parser.get_metrics_from_stat(BLANK_COMMIT, input_stats)
    assert metric == Metric('SubmoduleCount', 1)
def test_binary_file_count_detects_deleted():
    parser = BinaryFileCount()
    input_stats = [
        FileDiffStat(
            'foo', [], [], Status.DELETED,
            special_file=SpecialFile(SpecialFileType.BINARY, None, 'foo'),
        ),
    ]

    metric, = parser.get_metrics_from_stat(Commit.blank, input_stats)
    assert metric == Metric('BinaryFileCount', -1)
Пример #16
0
def test_template_import_parser():
    parser = CheetahTemplateImportCount()
    input_stats = (FileDiffStat(
        b'test.tmpl',
        [b'#import collections', b'#from os import path'],
        [b'#import os.path', b'nothing'],
        Status.ALREADY_EXISTING,
    ), )

    metric, = parser.get_metrics_from_stat(BLANK_COMMIT, input_stats)
    assert metric == Metric('CheetahTemplateImportCount', 1)
Пример #17
0
def test_python_import_parser():
    parser = PythonImportCount()
    input_stats = (FileDiffStat(
        b'test.py',
        [b'import collections', b'from os import path'],
        [b'import os.path', b'nothing'],
        Status.ALREADY_EXISTING,
    ), )

    metric, = parser.get_metrics_from_stat(BLANK_COMMIT, input_stats)
    assert metric == Metric('PythonImportCount', 1)
Пример #18
0
def test_lines_in_init():
    parser = Python__init__LineCount()
    input_stats = [
        FileDiffStat(
            b'testing/__init__.py',
            [b'from .foo import bar'],
            [],
            None,
        ),
    ]
    metric, = parser.get_metrics_from_stat(Commit.blank, input_stats)
    assert metric == Metric('Python__init__LineCount', 1)
Пример #19
0
def test_parser():
    parser = TODOCount()
    input_stats = (
        FileDiffStat(
            b'foo/bar.py',
            [b'# TO' + b'DO: herp all the derps', b'womp'],
            [],
            Status.ALREADY_EXISTING,
        ),
    )
    metric, = parser.get_metrics_from_stat(BLANK_COMMIT, input_stats)
    assert metric == Metric('TODOCount', 1)
Пример #20
0
def test_lines_of_code_parser():
    parser = LinesOfCodeParser()
    input_stats = (
        FileDiffStat(b'test.py', [b'a'], [], Status.ADDED),
        FileDiffStat(
            b'womp.yaml',
            [b'a', b'b', b'c'],
            [b'hi'],
            Status.ALREADY_EXISTING,
        ),
    )

    metrics = set(parser.get_metrics_from_stat(BLANK_COMMIT, input_stats))

    expected_value = {
        'TotalLinesOfCode': 3,
        'TotalLinesOfCode_python': 1,
        'TotalLinesOfCode_yaml': 2,
    }
    for metric in metrics:
        assert metric.value == expected_value.get(metric.name, 0)
Пример #21
0
def test_bump_submodule():
    ret = get_file_diff_stats_from_output(BUMP_SUBMODULE_COMMIT)
    assert ret == [
        FileDiffStat(
            b'verifycppbraces', [], [], Status.ALREADY_EXISTING,
            special_file=SpecialFile(
                file_type=SpecialFileType.SUBMODULE,
                added=b'd7c12e294428b60667dedd46ed7f00c04e36b7e4',
                removed=b'72053d85133aa854e2762a4b604976da825750fb',
            ),
        ),
    ]
Пример #22
0
def test_lines_in_init():
    parser = Python__init__LineCount()
    input_stats = [
        FileDiffStat(
            b'testing/__init__.py',
            [b'from .foo import bar'],
            [],
            None,
        ),
    ]
    metrics = list(parser.get_metrics_from_stat(input_stats))
    assert metrics == [Metric('Python__init__LineCount', 1)]
Пример #23
0
def test_remove_binary_commit():
    ret = get_file_diff_stats_from_output(REMOVE_BINARY_COMMIT)
    assert ret == [
        FileDiffStat(
            b'foo.pdf', [], [], Status.DELETED,
            special_file=SpecialFile(
                file_type=SpecialFileType.BINARY,
                added=None,
                removed=b'foo.pdf',
            ),
        ),
    ]
Пример #24
0
def test_binary_file_count_detects_added():
    parser = BinaryFileCount()
    input_stats = (FileDiffStat(
        b'foo',
        [],
        [],
        Status.ADDED,
        special_file=SpecialFile(SpecialFileType.BINARY, b'foo', None),
    ), )

    metric, = parser.get_metrics_from_stat(BLANK_COMMIT, input_stats)
    assert metric == Metric('BinaryFileCount', 1)
Пример #25
0
def test_parser():
    parser = TODOCount()
    input_stats = [
        FileDiffStat(
            b'foo/bar.py',
            [b'# TO' + b'DO: herp all the derps', b'womp'],
            [],
            None,
        ),
    ]
    metrics = list(parser.get_metrics_from_stat(input_stats))
    assert metrics == [Metric('TODOCount', 1)]
Пример #26
0
def test_modified_binary_commit():
    ret = get_file_diff_stats_from_output(MODIFY_BINARY_COMMIT)
    assert ret == [
        FileDiffStat(
            b'foo.pdf', [], [], Status.ALREADY_EXISTING,
            special_file=SpecialFile(
                file_type=SpecialFileType.BINARY,
                added=b'foo.pdf',
                removed=b'foo.pdf',
            ),
        ),
    ]
Пример #27
0
def test_parser():
    parser = TODOCount()
    input_stats = [
        FileDiffStat(
            b'foo/bar.py',
            [b'# TO' + b'DO: herp all the derps', b'womp'],
            [],
            None,
        ),
    ]
    metric, = parser.get_metrics_from_stat(Commit.blank, input_stats)
    assert metric == Metric('TODOCount', 1)
Пример #28
0
def test_curse_words_parser():
    parser = CurseWordsParser()
    input_stats = [
        FileDiffStat(
            b'some/file.rb',
            [b'#man seriously, f**k ruby'],
            [],
            None,
        ),
        FileDiffStat(
            b'cmds/foo.py',
            [b"# I'm clean I swear"],
            [],
            None,
        ),
    ]
    metrics = set(parser.get_metrics_from_stat(Commit.blank, input_stats))
    assert metrics == {
        Metric('TotalCurseWords', 1),
        Metric('TotalCurseWords_ruby', 1),
    }
Пример #29
0
def test_curse_words_parser():
    parser = CurseWordsParser()
    input_stats = (
        FileDiffStat(
            b'some/file.rb',
            [b'#man seriously, f**k ruby'],
            [],
            Status.ADDED,
        ),
        FileDiffStat(
            b'cmds/foo.py',
            [b"# I'm clean I swear"],
            [],
            Status.ADDED,
        ),
    )
    metrics = set(parser.get_metrics_from_stat(BLANK_COMMIT, input_stats))
    assert metrics == {
        Metric('TotalCurseWords', 1),
        Metric('TotalCurseWords_ruby', 1),
    }
Пример #30
0
def test_template_import_parser():
    parser = CheetahTemplateImportCount()
    input_stats = [
        FileDiffStat(
            b'test.tmpl',
            [b'#import collections', b'#from os import path'],
            [b'#import os.path', b'nothing'],
            None,
        ),
    ]

    metrics = list(parser.get_metrics_from_stat(Commit.blank, input_stats))
    assert metrics == [Metric('CheetahTemplateImportCount', 1)]