Chromium Code Reviews| Index: tools/telemetry/PRESUBMIT.py |
| diff --git a/tools/telemetry/PRESUBMIT.py b/tools/telemetry/PRESUBMIT.py |
| index b3761897dcb1120cdf00e51c4ea8c1b789e83da1..29aacad2f2f3386f206493a1b6401725121403cd 100644 |
| --- a/tools/telemetry/PRESUBMIT.py |
| +++ b/tools/telemetry/PRESUBMIT.py |
| @@ -1,12 +1,66 @@ |
| # Copyright 2012 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. |
| +import json |
| import os |
| import sys |
| PYLINT_BLACKLIST = [] |
| PYLINT_DISABLED_WARNINGS = ['R0923', 'R0201', 'E1101'] |
| + |
| +def _GetCurrentTelemetryDependencies(): |
| + from telemetry.util import find_dependencies |
| + from telemetry.util import path |
| + parser = find_dependencies.FindDependenciesCommand.CreateParser() |
| + find_dependencies.FindDependenciesCommand.AddCommandLineArgs(parser, None) |
| + options, args = parser.parse_args(None) |
| + options.positional_args = args |
| + target_paths = [ |
| + os.path.join(path.GetTelemetryDir(), 'telemetry', 'benchmark_runner.py')] |
| + return find_dependencies.FindDependencies(target_paths, options=options) |
| + |
| + |
| +def _GetRestrictedTelemetryDeps(): |
| + from telemetry.util import path |
| + telemetry_deps = {} |
| + with open('TELEMETRY_DEPS', 'r') as f: |
| + telemetry_deps = json.load(f) |
| + |
| + # Normalize paths in telemetry_deps since TELEMETRY_DEPS file only contain |
| + # the relative path in chromium/src/. |
| + def NormalizePath(p): |
| + p = p.replace('/', os.path.sep) |
| + return os.path.realpath(os.path.join(path.GetChromiumSrcDir(), p)) |
| + |
| + telemetry_deps['file_deps'] = [ |
| + NormalizePath(p) for p in telemetry_deps['file_deps']] |
| + telemetry_deps['directory_deps'] = [ |
| + NormalizePath(p) for p in telemetry_deps['directory_deps']] |
| + return telemetry_deps |
| + |
| + |
| +#TODO(nednguyen, dtu, aiolos): Remove this check when telemetry no longer has |
| +# dependency in chromium/src/. |
| +def _CheckNoExtraThirdPartyDependencies(_input_api, output_api): |
| + results = [] |
| + telemetry_deps = _GetRestrictedTelemetryDeps() |
| + current_dependencies = _GetCurrentTelemetryDependencies() |
| + for dep_path in current_dependencies: |
| + dep_path_is_extra_dep = not ( |
| + dep_path in telemetry_deps['file_deps'] or |
| + any(dep_path.startswith(d) for d in telemetry_deps['directory_deps'])) |
| + if dep_path_is_extra_dep: |
| + results.append(output_api.PresubmitError( |
| + 'Extra third party dependency path is added to telemetry: %s' % |
| + dep_path)) |
| + if results: |
| + results.append(output_api.PresubmitError( |
| + 'Your patch adds new dependencies to telemetry. Please contact aiolos@,' |
| + ' dtu@, or nednguyen@ on how to proceeds with this change.')) |
|
sullivan
2015/04/14 19:20:34
nit: s/proceeds/proceed/
nednguyen
2015/04/14 19:46:53
Done.
|
| + return results |
| + |
| + |
| def _CommonChecks(input_api, output_api): |
| results = [] |
| @@ -24,6 +78,7 @@ def _CommonChecks(input_api, output_api): |
| input_api, output_api, |
| black_list=PYLINT_BLACKLIST, |
| disabled_warnings=PYLINT_DISABLED_WARNINGS)) |
| + results.extend(_CheckNoExtraThirdPartyDependencies(input_api, output_api)) |
| return results |
| def GetPathsToPrepend(input_api): |