def _test_reporter(api, analyzers): # Always use the same setup, only varies the analyzers revision = PhabricatorRevision('PHID-DIFF-abcdef', api) revision.lines = { 'test.cpp': [41, 42, 43], } reporter = PhabricatorReporter({'analyzers': analyzers}, api=api) issues = [ ClangFormatIssue('test.cpp', 42, 1, revision), ClangTidyIssue(('test.cpp', '42', '51', 'error', 'dummy message', 'modernize-use-nullptr'), revision), InferIssue({ 'file': 'test.cpp', 'line': 42, 'column': 1, 'bug_type': 'dummy', 'kind': 'whatever', 'qualifier': 'dummy message.', }, revision), MozLintIssue('test.cpp', 1, 'danger', 42, 'flake8', 'Python error', 'EXXX', revision), ] assert all(i.is_publishable() for i in issues) revision.improvement_patches = { 'dummy': 'not gonna work', 'clang-format': 'https://diff.url/clang-format', 'clang-tidy': 'https://diff.url/clang-tidy', 'mozlint': 'https://diff.url/mozlint', 'infer': 'https://diff.url/infer', } return reporter.publish(issues, revision)
def test_as_markdown(mock_revision): ''' Test markdown generation for InferIssue ''' from static_analysis_bot.infer.infer import InferIssue parts = { 'file': 'path/to/file.java', 'line': 3, 'column': -1, 'bug_type': 'SOMETYPE', 'kind': 'SomeKindOfBug', 'qualifier': 'Error on this line' } issue = InferIssue(parts, mock_revision) issue.body = 'Dummy body' assert issue.as_markdown() == '''
def test_as_text(mock_revision): ''' Test text export for InferIssue ''' from static_analysis_bot.infer.infer import InferIssue parts = { 'file': 'path/to/file.java', 'line': 3, 'column': -1, 'bug_type': 'SOMETYPE', 'kind': 'SomeKindOfBug', 'qualifier': 'Error on this line' } issue = InferIssue(parts, mock_revision) issue.body = 'Dummy body withUppercaseChars' expected = 'SomeKindOfBug: Error on this line [infer: SOMETYPE]' assert issue.as_text() == expected
def _test_reporter(api, analyzers): # Always use the same setup, only varies the analyzers revision = PhabricatorRevision(api, 'PHID-DIFF-abcdef') revision.lines = { 'test.cpp': [0, 41, 42, 43], 'dom/test.cpp': [ 42, ], } reporter = PhabricatorReporter({'analyzers': analyzers}, api=api) issues = [ ClangFormatIssue('dom/test.cpp', 42, 1, revision), ClangTidyIssue(('test.cpp', '42', '51', 'error', 'dummy message', 'modernize-use-nullptr'), revision), InferIssue( { 'file': 'test.cpp', 'line': 42, 'column': 1, 'bug_type': 'dummy', 'kind': 'whatever', 'qualifier': 'dummy message.', }, revision), MozLintIssue('test.cpp', 1, 'danger', 42, 'flake8', 'Python error', 'EXXX', revision), CoverageIssue('test.cpp', 0, 'This file is uncovered', revision), ] assert all(i.is_publishable() for i in issues) revision.improvement_patches = [ ImprovementPatch('dummy', repr(revision), 'Whatever'), ImprovementPatch('clang-tidy', repr(revision), 'Some C fixes'), ImprovementPatch('clang-format', repr(revision), 'Some lint fixes'), ImprovementPatch('infer', repr(revision), 'Some java fixes'), ImprovementPatch('mozlint', repr(revision), 'Some js fixes'), ] list(map(lambda p: p.write(), revision.improvement_patches)) # trigger local write return reporter.publish(issues, revision)