1 # Copyright (c) 2013 The Chromium Authors. All rights reserved. 2 # Use of this source code is governed by a BSD-style license that can be 3 # found in the LICENSE file. 4 5 """Presubmit script for android buildbot. 6 7 See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts for 8 details on the presubmit API built into gcl. 9 """ 10 11 _DELETIONS_ONLY_FILES = ( 12 'build/android/findbugs_filter/findbugs_known_bugs.txt', 13 ) 14 15 16 def _CheckDeletionsOnlyFiles(input_api, output_api): 17 """Check that a certain listed files only have deletions. 18 """ 19 warnings = [] 20 for f in input_api.AffectedFiles(): 21 if f.LocalPath() in _DELETIONS_ONLY_FILES: 22 if f.ChangedContents(): 23 warnings.append(f.LocalPath()) 24 results = [] 25 if warnings: 26 results.append(output_api.PresubmitPromptWarning( 27 'Following files should only contain deletions.', warnings)) 28 return results 29 30 31 def CommonChecks(input_api, output_api): 32 output = [] 33 34 def J(*dirs): 35 """Returns a path relative to presubmit directory.""" 36 return input_api.os_path.join(input_api.PresubmitLocalPath(), *dirs) 37 38 output.extend(input_api.canned_checks.RunPylint( 39 input_api, 40 output_api, 41 black_list=[r'pylib/symbols/.*\.py$', r'gyp/.*\.py$', r'gn/.*\.py'], 42 extra_paths_list=[ 43 J(), J('..', '..', 'third_party', 'android_testrunner'), 44 J('buildbot')])) 45 output.extend(input_api.canned_checks.RunPylint( 46 input_api, 47 output_api, 48 white_list=[r'gyp/.*\.py$', r'gn/.*\.py'], 49 extra_paths_list=[J('gyp'), J('gn')])) 50 51 # Disabled due to http://crbug.com/410936 52 #output.extend(input_api.canned_checks.RunUnitTestsInDirectory( 53 #input_api, output_api, J('buildbot', 'tests'))) 54 55 pylib_test_env = dict(input_api.environ) 56 pylib_test_env.update({ 57 'PYTHONPATH': input_api.PresubmitLocalPath(), 58 'PYTHONDONTWRITEBYTECODE': '1', 59 }) 60 output.extend(input_api.canned_checks.RunUnitTests( 61 input_api, 62 output_api, 63 unit_tests=[ 64 J('pylib', 'device', 'device_utils_test.py'), 65 J('pylib', 'gtest', 'test_package_test.py'), 66 J('pylib', 'instrumentation', 'test_runner_test.py'), 67 ], 68 env=pylib_test_env)) 69 output.extend(_CheckDeletionsOnlyFiles(input_api, output_api)) 70 return output 71 72 73 def CheckChangeOnUpload(input_api, output_api): 74 return CommonChecks(input_api, output_api) 75 76 77 def CheckChangeOnCommit(input_api, output_api): 78 return CommonChecks(input_api, output_api) 79