| Index: tools/android/findbugs_plugin/test/run_findbugs_plugin_tests.py
|
| diff --git a/tools/android/findbugs_plugin/test/run_findbugs_plugin_tests.py b/tools/android/findbugs_plugin/test/run_findbugs_plugin_tests.py
|
| index a570cdb6045446a32e6836247dc231d27cb22d6b..e36fe8e55c1e0a50e4349c413f8222dfe51edab7 100755
|
| --- a/tools/android/findbugs_plugin/test/run_findbugs_plugin_tests.py
|
| +++ b/tools/android/findbugs_plugin/test/run_findbugs_plugin_tests.py
|
| @@ -14,7 +14,7 @@
|
| # remove the expected result of exsting tests.
|
|
|
|
|
| -import optparse
|
| +import argparse
|
| import os
|
| import sys
|
|
|
| @@ -26,28 +26,79 @@ from pylib import constants
|
| from pylib.utils import findbugs
|
|
|
|
|
| +_EXPECTED_WARNINGS = set([
|
| + findbugs.FindBugsWarning(
|
| + bug_type='CHROMIUM_SYNCHRONIZED_THIS',
|
| + start_line=15,
|
| + end_line=15,
|
| + file_name='SimpleSynchronizedThis.java',
|
| + message=(
|
| + "Shouldn't use synchronized(this)",
|
| + 'In class org.chromium.tools.findbugs.plugin.'
|
| + + 'SimpleSynchronizedThis',
|
| + 'In method org.chromium.tools.findbugs.plugin.'
|
| + + 'SimpleSynchronizedThis.synchronizedThis()',
|
| + 'At SimpleSynchronizedThis.java:[line 15]',
|
| + )),
|
| + findbugs.FindBugsWarning(
|
| + bug_type='CHROMIUM_SYNCHRONIZED_METHOD',
|
| + start_line=14,
|
| + end_line=14,
|
| + file_name='SimpleSynchronizedStaticMethod.java',
|
| + message=(
|
| + "Shouldn't use synchronized method",
|
| + 'In class org.chromium.tools.findbugs.plugin.'
|
| + + 'SimpleSynchronizedStaticMethod',
|
| + 'In method org.chromium.tools.findbugs.plugin.'
|
| + + 'SimpleSynchronizedStaticMethod.synchronizedStaticMethod()',
|
| + 'At SimpleSynchronizedStaticMethod.java:[line 14]',
|
| + )),
|
| + findbugs.FindBugsWarning(
|
| + bug_type='CHROMIUM_SYNCHRONIZED_METHOD',
|
| + start_line=15,
|
| + end_line=15,
|
| + file_name='SimpleSynchronizedMethod.java',
|
| + message=(
|
| + "Shouldn't use synchronized method",
|
| + 'In class org.chromium.tools.findbugs.plugin.'
|
| + + 'SimpleSynchronizedMethod',
|
| + 'In method org.chromium.tools.findbugs.plugin.'
|
| + + 'SimpleSynchronizedMethod.synchronizedMethod()',
|
| + 'At SimpleSynchronizedMethod.java:[line 15]',
|
| + )),
|
| +])
|
| +
|
| +
|
| def main(argv):
|
| - parser = findbugs.GetCommonParser()
|
|
|
| - options, _ = parser.parse_args()
|
| + parser = argparse.ArgumentParser()
|
| + parser.add_argument(
|
| + '-l', '--release-build', action='store_true', dest='release',
|
| + help='Run the release build of the findbugs plugin test.')
|
| + args = parser.parse_args()
|
| +
|
| + test_jar_path = os.path.join(
|
| + constants.GetOutDirectory(
|
| + 'Release' if args.release else 'Debug'),
|
| + 'lib.java', 'findbugs_plugin_test.jar')
|
|
|
| - if not options.known_bugs:
|
| - options.known_bugs = os.path.join(constants.DIR_SOURCE_ROOT, 'tools',
|
| - 'android', 'findbugs_plugin', 'test',
|
| - 'expected_result.txt')
|
| + findbugs_command, findbugs_warnings = findbugs.Run(
|
| + None, 'org.chromium.tools.findbugs.plugin.*', None, None, None,
|
| + [test_jar_path])
|
|
|
| - if not options.only_analyze:
|
| - options.only_analyze = 'org.chromium.tools.findbugs.plugin.*'
|
| + missing_warnings = _EXPECTED_WARNINGS.difference(findbugs_warnings)
|
| + if missing_warnings:
|
| + print 'Missing warnings:'
|
| + for w in missing_warnings:
|
| + print '%s' % str(w)
|
|
|
| - # crbug.com/449101
|
| - # Temporary workaround to have the Android Clang Builder (dbg) bot
|
| - # pass the findbugs_tests step.
|
| - if not options.exclude:
|
| - options.exclude = os.path.join(constants.DIR_SOURCE_ROOT, 'build',
|
| - 'android', 'findbugs_filter',
|
| - 'findbugs_exclude.xml')
|
| + unexpected_warnings = findbugs_warnings.difference(_EXPECTED_WARNINGS)
|
| + if unexpected_warnings:
|
| + print 'Unexpected warnings:'
|
| + for w in unexpected_warnings:
|
| + print '%s' % str(w)
|
|
|
| - return findbugs.Run(options)
|
| + return len(unexpected_warnings) + len(missing_warnings)
|
|
|
| if __name__ == '__main__':
|
| sys.exit(main(sys.argv))
|
|
|