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_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_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)
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)
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_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))
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
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)
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))
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_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)
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)
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)
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)
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)
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)
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_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)]
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_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)
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)]
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_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)
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), }
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), }
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)]