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 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))
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))
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, ), ]
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, ), ]
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', ), ), ]
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', ), ), ]
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_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_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, ), ), ]
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, ), ), ]
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 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 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, ), ]
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, ), ]
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 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), ]
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 == []
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), ]
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), ]
def test_does_not_choke_on_empty(): ret = get_file_diff_stats_from_output(MERGE_COMMIT_OUTPUT) assert ret == []