| Index: tools/telemetry/telemetry/telemetry_dependencies_unittest.py
|
| diff --git a/tools/telemetry/telemetry/telemetry_dependencies_unittest.py b/tools/telemetry/telemetry/telemetry_dependencies_unittest.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..45603b9ff30ea937c8cb1cda8f11f16b6d7afa6d
|
| --- /dev/null
|
| +++ b/tools/telemetry/telemetry/telemetry_dependencies_unittest.py
|
| @@ -0,0 +1,57 @@
|
| +# 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.
|
| +
|
| +import json
|
| +import os
|
| +import unittest
|
| +
|
| +from telemetry.util import path
|
| +from telemetry.util import find_dependencies
|
| +
|
| +
|
| +_TELEMETRY_DEPS_PATH = os.path.join(
|
| + path.GetTelemetryDir(), 'telemetry', 'TELEMETRY_DEPS')
|
| +
|
| +
|
| +def _GetCurrentTelemetryDependencies():
|
| + parser = find_dependencies.FindDependenciesCommand.CreateParser()
|
| + find_dependencies.FindDependenciesCommand.AddCommandLineArgs(parser, None)
|
| + options, args = parser.parse_args([''])
|
| + options.positional_args = args
|
| + return find_dependencies.FindDependencies([], options=options)
|
| +
|
| +
|
| +def _GetRestrictedTelemetryDeps():
|
| + with open(_TELEMETRY_DEPS_PATH, '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
|
| +
|
| +
|
| +class TelemetryDependenciesTest(unittest.TestCase):
|
| +
|
| + def testNoNewTelemetryDependencies(self):
|
| + telemetry_deps = _GetRestrictedTelemetryDeps()
|
| + current_dependencies = _GetCurrentTelemetryDependencies()
|
| + extra_dep_paths = []
|
| + for dep_path in current_dependencies:
|
| + if not (dep_path in telemetry_deps['file_deps'] or
|
| + any(path.IsSubpath(dep_path, d)
|
| + for d in telemetry_deps['directory_deps'])):
|
| + extra_dep_paths.append(dep_path)
|
| + if extra_dep_paths:
|
| + self.fail(
|
| + 'Your patch adds new dependencies to telemetry. Please contact '
|
| + 'aiolos@,dtu@, or nednguyen@ on how to proceed with this change. '
|
| + 'Extra dependencies:\n%s' % '\n'.join(extra_dep_paths))
|
|
|