Ejemplo n.º 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',
            ),
        ),
    ]
Ejemplo n.º 2
0
def get_metrics(diff, metric_parsers):
    def get_all_metrics(file_diff_stats):
        for metric_parser_cls in metric_parsers:
            metric_parser = metric_parser_cls()
            for metric in metric_parser.get_metrics_from_stat(file_diff_stats):
                yield metric

    file_diff_stats = get_file_diff_stats_from_output(diff)
    return list(get_all_metrics(file_diff_stats))
Ejemplo n.º 3
0
def get_metrics(diff, metric_parsers):
    def get_all_metrics(file_diff_stats):
        for metric_parser_cls in metric_parsers:
            metric_parser = metric_parser_cls()
            for metric in metric_parser.get_metrics_from_stat(file_diff_stats):
                yield metric

    file_diff_stats = get_file_diff_stats_from_output(diff)
    return list(get_all_metrics(file_diff_stats))
Ejemplo n.º 4
0
def test_added_file():
    ret = get_file_diff_stats_from_output(FILE_ADDED_COMMIT)
    assert ret == [
        FileDiffStat(
            'example_config.yaml',
            ['', '# Git repo url', 'foo', 'bar'],
            [],
            Status.ADDED,
        ),
    ]
Ejemplo n.º 5
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,
        ),
    ]
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,
        ),
    ]
Ejemplo n.º 7
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_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,
        ),
    ]
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',
            ),
        ),
    ]
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',
            ),
        ),
    ]
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',
            ),
        ),
    ]
Ejemplo n.º 12
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',
            ),
        ),
    ]
Ejemplo n.º 13
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',
            ),
        ),
    ]
Ejemplo n.º 14
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',
            ),
        ),
    ]
Ejemplo n.º 15
0
def test_add_binary_commit():
    ret = get_file_diff_stats_from_output(ADD_BINARY_COMMIT)
    assert ret == [
        FileDiffStat(
            'foo.pdf', [], [], Status.ADDED,
            special_file=SpecialFile(
                file_type=SpecialFileType.BINARY,
                added='foo.pdf',
                removed=None,
            ),
        ),
    ]
def test_moving_symlink():
    ret = get_file_diff_stats_from_output(COMMIT_MOVING_SYMLINK)
    assert ret == [
        FileDiffStat(
            b'pa2',
            [], [],
            Status.ALREADY_EXISTING,
            special_file=SpecialFile(
                file_type=SpecialFileType.SYMLINK,
                added=b'apache/',
                removed=b'apache/html1/2mJe7Zhz/pa2/',
            ),
        ),
    ]
def test_adding_symlink():
    ret = get_file_diff_stats_from_output(COMMIT_ADDING_SYMLINK)
    assert ret == [
        FileDiffStat(
            b'pa2',
            [], [],
            Status.ADDED,
            special_file=SpecialFile(
                file_type=SpecialFileType.SYMLINK,
                added=b'apache/html1/2mJe7Zhz/pa2/',
                removed=None,
            ),
        ),
    ]
Ejemplo n.º 18
0
def test_adding_symlink():
    ret = get_file_diff_stats_from_output(COMMIT_ADDING_SYMLINK)
    assert ret == [
        FileDiffStat(
            b'pa2',
            [], [],
            Status.ADDED,
            special_file=SpecialFile(
                file_type=SpecialFileType.SYMLINK,
                added=b'apache/html1/2mJe7Zhz/pa2/',
                removed=None,
            ),
        ),
    ]
Ejemplo n.º 19
0
def test_moving_symlink():
    ret = get_file_diff_stats_from_output(COMMIT_MOVING_SYMLINK)
    assert ret == [
        FileDiffStat(
            b'pa2',
            [], [],
            Status.ALREADY_EXISTING,
            special_file=SpecialFile(
                file_type=SpecialFileType.SYMLINK,
                added=b'apache/',
                removed=b'apache/html1/2mJe7Zhz/pa2/',
            ),
        ),
    ]
Ejemplo n.º 20
0
def get_metrics(commit, diff, metric_parsers, exclude):
    def get_all_metrics(file_diff_stats):
        for metric_parser_cls in metric_parsers:
            metric_parser = metric_parser_cls()
            for metric in metric_parser.get_metrics_from_stat(
                    commit,
                    file_diff_stats,
            ):
                yield metric

    file_diff_stats = get_file_diff_stats_from_output(diff)
    file_diff_stats = tuple(x for x in file_diff_stats
                            if not exclude.search(x.path))
    return tuple(get_all_metrics(file_diff_stats))
Ejemplo n.º 21
0
def get_metrics(commit, diff, metric_parsers, exclude):
    def get_all_metrics(file_diff_stats):
        for metric_parser_cls in metric_parsers:
            metric_parser = metric_parser_cls()
            for metric in metric_parser.get_metrics_from_stat(
                commit, file_diff_stats,
            ):
                yield metric

    file_diff_stats = get_file_diff_stats_from_output(diff)
    file_diff_stats = tuple(
        x for x in file_diff_stats
        if not exclude.search(x.path)
    )
    return tuple(get_all_metrics(file_diff_stats))
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,
        ),
    ]
Ejemplo n.º 23
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,
        ),
    ]
Ejemplo n.º 24
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,
            ),
        ),
    ]
Ejemplo n.º 25
0
def get_metrics(
    commit: Commit,
    diff: bytes,
    metric_parsers: Set[Type[DiffParserBase]],
    exclude: Pattern[bytes],
) -> Tuple[Metric, ...]:
    def get_all_metrics(
        file_diff_stats: Tuple[FileDiffStat, ...],
    ) -> Generator[Metric, None, None]:
        for metric_parser_cls in metric_parsers:
            metric_parser = metric_parser_cls()
            yield from metric_parser.get_metrics_from_stat(
                commit,
                file_diff_stats,
            )

    file_diff_stats = tuple(x for x in get_file_diff_stats_from_output(diff)
                            if not exclude.search(x.path))
    return tuple(get_all_metrics(file_diff_stats))
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,
            ),
        ),
    ]
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',
            ),
        ),
    ]
def test_multiple_empty_files():
    ret = get_file_diff_stats_from_output(MULTIPLE_EMPTY_FILES)
    assert ret == [
        FileDiffStat(b'foo/__init__.py', [], [], Status.ADDED),
        FileDiffStat(b'bar/__init__.py', [], [], Status.ADDED),
    ]
Ejemplo n.º 29
0
def test_mode_change_diff():
    ret = get_file_diff_stats_from_output(MODE_CHANGE_COMMIT)
    assert ret == [
        FileDiffStat(b'EECS485PA3_W13.pdf', [], [], Status.ALREADY_EXISTING),
    ]
def test_does_not_choke_on_empty():
    ret = get_file_diff_stats_from_output(MERGE_COMMIT_OUTPUT)
    assert ret == []
Ejemplo n.º 31
0
def test_multiple_empty_files():
    ret = get_file_diff_stats_from_output(MULTIPLE_EMPTY_FILES)
    assert ret == [
        FileDiffStat(b'foo/__init__.py', [], [], Status.ADDED),
        FileDiffStat(b'bar/__init__.py', [], [], Status.ADDED),
    ]
Ejemplo n.º 32
0
def test_commit_with_terrible():
    ret = get_file_diff_stats_from_output(COMMIT_WITH_TERRIBLE)
    assert len(ret[0].lines_added) == 1
def test_commit_with_terrible():
    ret = get_file_diff_stats_from_output(COMMIT_WITH_TERRIBLE)
    assert len(ret[0].lines_added) == 1
def test_mode_change_diff():
    ret = get_file_diff_stats_from_output(MODE_CHANGE_COMMIT)
    assert ret == [
        FileDiffStat(b'EECS485PA3_W13.pdf', [], [], Status.ALREADY_EXISTING),
    ]
Ejemplo n.º 35
0
def test_does_not_choke_on_empty():
    ret = get_file_diff_stats_from_output(MERGE_COMMIT_OUTPUT)
    assert ret == []