From 5580d5c4dc2de69fd1e5b923ffd88a33e77860f5 Mon Sep 17 00:00:00 2001 From: jbudorick Date: Mon, 14 Dec 2015 14:12:02 -0800 Subject: [PATCH] [Android] Add a presubmit for devil/. BUG=476719 Review URL: https://codereview.chromium.org/1517243003 Cr-Original-Commit-Position: refs/heads/master@{#365107} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: a83d25fbaac0f8a92538a79af87bdedc0f888233 --- android/PRESUBMIT.py | 24 +---------- android/devil/PRESUBMIT.py | 87 ++++++++++++++++++++++++++++++++++++++ android/devil/pylintrc | 15 +++++++ 3 files changed, 104 insertions(+), 22 deletions(-) create mode 100644 android/devil/PRESUBMIT.py create mode 100644 android/devil/pylintrc diff --git a/android/PRESUBMIT.py b/android/PRESUBMIT.py index ad8ca1f8e..8cfe59c4e 100644 --- a/android/PRESUBMIT.py +++ b/android/PRESUBMIT.py @@ -27,8 +27,8 @@ def CommonChecks(input_api, output_api): input_api, output_api, pylintrc='pylintrc', - # symbols has its own PRESUBMIT.py - black_list=build_pys + [r'pylib/symbols/.*\.py$'], + # devil and symbols have their own PRESUBMIT.py + black_list=build_pys + [r'devil/.*\.py$', r'pylib/symbols/.*\.py$'], extra_paths_list=[J(), J('buildbot')])) output.extend(input_api.canned_checks.RunPylint( input_api, @@ -60,26 +60,6 @@ def CommonChecks(input_api, output_api): ], env=pylib_test_env)) - - devil_test_env = dict(pylib_test_env) - devil_test_env.update({ - 'DEVIL_ENV_CONFIG': - input_api.os_path.join(build_android_dir, 'devil_chromium.json') - }) - output.extend(input_api.canned_checks.RunUnitTests( - input_api, - output_api, - unit_tests=[ - J('devil', 'devil_env_test.py'), - J('devil', 'android', 'battery_utils_test.py'), - J('devil', 'android', 'device_utils_test.py'), - J('devil', 'android', 'fastboot_utils_test.py'), - J('devil', 'android', 'md5sum_test.py'), - J('devil', 'android', 'logcat_monitor_test.py'), - J('devil', 'utils', 'cmd_helper_test.py'), - J('devil', 'utils', 'timeout_retry_unittest.py'), - ], - env=devil_test_env)) return output diff --git a/android/devil/PRESUBMIT.py b/android/devil/PRESUBMIT.py new file mode 100644 index 000000000..e2c3dfe51 --- /dev/null +++ b/android/devil/PRESUBMIT.py @@ -0,0 +1,87 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Presubmit script for devil. + +See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts for +details on the presubmit API built into depot_tools. +""" + + +def _RunPylint(input_api, output_api): + return input_api.canned_checks.RunPylint( + input_api, + output_api, + pylintrc='pylintrc', + extra_paths_list=[ + input_api.os_path.join(input_api.PresubmitLocalPath(), '..'), + ]) + + +def _RunUnitTests(input_api, output_api): + def J(*dirs): + """Returns a path relative to presubmit directory.""" + return input_api.os_path.join(input_api.PresubmitLocalPath(), *dirs) + + test_env = dict(input_api.environ) + test_env.update({ + 'PYTHONDONTWRITEBYTECODE': '1', + 'PYTHONPATH': ':'.join([J(), J('..')]), + }) + + return input_api.canned_checks.RunUnitTests( + input_api, + output_api, + unit_tests=[ + J('devil_env_test.py'), + J('android', 'battery_utils_test.py'), + J('android', 'device_utils_test.py'), + J('android', 'fastboot_utils_test.py'), + J('android', 'md5sum_test.py'), + J('android', 'logcat_monitor_test.py'), + J('utils', 'cmd_helper_test.py'), + J('utils', 'timeout_retry_unittest.py'), + ], + env=test_env) + + +def _EnsureNoPylibUse(input_api, output_api): + def other_python_files(f): + this_presubmit_file = input_api.os_path.join( + input_api.PresubmitLocalPath(), 'PRESUBMIT.py') + return (f.LocalPath().endswith('.py') + and not f.AbsoluteLocalPath() == this_presubmit_file) + + changed_files = input_api.AffectedSourceFiles(other_python_files) + import_error_re = input_api.re.compile( + r'(from pylib.* import)|(import pylib)') + + errors = [] + for f in changed_files: + errors.extend( + '%s:%d' % (f.LocalPath(), line_number) + for line_number, line_text in f.ChangedContents() + if import_error_re.search(line_text)) + + if errors: + return [output_api.PresubmitError( + 'pylib modules should not be imported from devil modules.', + items=errors)] + return [] + + +def CommonChecks(input_api, output_api): + output = [] + output += _RunPylint(input_api, output_api) + output += _RunUnitTests(input_api, output_api) + output += _EnsureNoPylibUse(input_api, output_api) + return output + + +def CheckChangeOnUpload(input_api, output_api): + return CommonChecks(input_api, output_api) + + +def CheckChangeOnCommit(input_api, output_api): + return CommonChecks(input_api, output_api) diff --git a/android/devil/pylintrc b/android/devil/pylintrc new file mode 100644 index 000000000..8005a5d27 --- /dev/null +++ b/android/devil/pylintrc @@ -0,0 +1,15 @@ +[FORMAT] + +max-line-length=80 + +[MESSAGES CONTROL] + +disable=abstract-class-not-used,bad-continuation,bad-indentation,duplicate-code,fixme,invalid-name,locally-disabled,locally-enabled,missing-docstring,star-args,too-few-public-methods,too-many-arguments,too-many-branches,too-many-instance-attributes,too-many-lines,too-many-locals,too-many-public-methods,too-many-statements, + +[REPORTS] + +reports=no + +[VARIABLES] + +dummy-variables-rgx=^_.*$|dummy