Commit e2ff83b4 authored by nednguyen's avatar nednguyen Committed by Commit bot

[Telemetry] Add test to prevents adding new dependencies to telemetry.

BUG=472672

Review URL: https://codereview.chromium.org/1057553003

Cr-Commit-Position: refs/heads/master@{#325490}
parent 9586f7bf
{
"NOTE": [
"Please do NOT add new dependencies into this file. Contact ",
"aiolos@, dtu@, or nednguyen@ on how to proceed with your change."
],
"directory_deps": [
"build/android/pylib/",
"chrome/test/data/extensions/",
"chrome/test/data/perf/canvas_bench/",
"third_party/android_testrunner/",
"third_party/android_tools/sdk/platform-tools/",
"third_party/trace-viewer/",
"third_party/typ/",
"third_party/pexpect/",
"third_party/webpagereplay/",
"third_party/webdriver/pylib/selenium/",
"tools/crx_id/",
"tools/telemetry/"
],
"file_deps": [
"build/android/AndroidManifest.xml",
"build/android/CheckInstallApk-debug.apk",
"build/android/OWNERS",
"build/android/PRESUBMIT.py",
"build/android/adb_android_webview_command_line",
"build/android/adb_chrome_shell_command_line",
"build/android/adb_content_shell_command_line",
"build/android/adb_device_functions.sh",
"build/android/adb_gdb",
"build/android/adb_gdb_android_webview_shell",
"build/android/adb_gdb_chrome_shell",
"build/android/adb_gdb_content_shell",
"build/android/adb_gdb_cronet_sample",
"build/android/adb_gdb_mojo_shell",
"build/android/adb_install_apk.py",
"build/android/adb_kill_android_webview_shell",
"build/android/adb_kill_chrome_shell",
"build/android/adb_kill_content_shell",
"build/android/adb_logcat_monitor.py",
"build/android/adb_logcat_printer.py",
"build/android/adb_profile_chrome",
"build/android/adb_reverse_forwarder.py",
"build/android/adb_run_android_webview_shell",
"build/android/adb_run_chrome_shell",
"build/android/adb_run_content_shell",
"build/android/adb_run_mojo_shell",
"build/android/android_no_jni_exports.lst",
"build/android/ant/apk-package.xml",
"build/android/ant/chromium-debug.keystore",
"build/android/asan_symbolize.py",
"build/android/avd.py",
"build/android/bb_run_sharded_steps.py",
"build/android/buildbot/OWNERS",
"build/android/buildbot/bb_annotations.py",
"build/android/buildbot/bb_device_status_check.py",
"build/android/buildbot/bb_device_steps.py",
"build/android/buildbot/bb_host_steps.py",
"build/android/buildbot/bb_run_bot.py",
"build/android/buildbot/bb_utils.py",
"build/android/buildbot/env_to_json.py",
"build/android/buildbot/tests/bb_run_bot_test.py",
"build/android/chrome_with_libs.gyp",
"build/android/cpufeatures.gypi",
"build/android/create_standalone_apk_action.gypi",
"build/android/developer_recommended_flags.gypi",
"build/android/dex_action.gypi",
"build/android/disable_lto.gypi",
"build/android/empty_proguard.flags",
"build/android/enable_asserts.py",
"build/android/envsetup.sh",
"build/android/finalize_apk_action.gypi",
"build/android/findbugs_action.gypi",
"build/android/findbugs_diff.py",
"build/android/findbugs_filter/findbugs_exclude.xml",
"build/android/generate_emma_html.py",
"build/android/gn/zip.py",
"build/android/gyp/aidl.py",
"build/android/gyp/ant.py",
"build/android/gyp/apk_install.py",
"build/android/gyp/apk_obfuscate.py",
"build/android/gyp/copy_ex.py",
"build/android/gyp/create_device_library_links.py",
"build/android/gyp/create_dist_jar.py",
"build/android/gyp/create_java_binary_script.py",
"build/android/gyp/create_placeholder_files.py",
"build/android/gyp/create_standalone_apk.py",
"build/android/gyp/dex.py",
"build/android/gyp/emma_instr.py",
"build/android/gyp/finalize_apk.py",
"build/android/gyp/find.py",
"build/android/gyp/gcc_preprocess.py",
"build/android/gyp/generate_v14_compatible_resources.py",
"build/android/gyp/get_device_configuration.py",
"build/android/gyp/insert_chromium_version.py",
"build/android/gyp/jar.py",
"build/android/gyp/jar_toc.py",
"build/android/gyp/java_cpp_enum.py",
"build/android/gyp/java_cpp_enum_tests.py",
"build/android/gyp/javac.py",
"build/android/gyp/jinja_template.py",
"build/android/gyp/lint.py",
"build/android/gyp/pack_arm_relocations.py",
"build/android/gyp/package_resources.py",
"build/android/gyp/process_resources.py",
"build/android/gyp/proguard.py",
"build/android/gyp/push_libraries.py",
"build/android/gyp/strip_library_for_device.py",
"build/android/gyp/test/BUILD.gn",
"build/android/gyp/test/java/org/chromium/helloworld/HelloWorldMain.java",
"build/android/gyp/test/java/org/chromium/helloworld/HelloWorldPrinter.java",
"build/android/gyp/touch.py",
"build/android/gyp/util/__init__.py",
"build/android/gyp/util/build_device.py",
"build/android/gyp/util/build_utils.py",
"build/android/gyp/util/md5_check.py",
"build/android/gyp/util/md5_check_test.py",
"build/android/gyp/write_build_config.py",
"build/android/gyp/write_ordered_libraries.py",
"build/android/gyp/zip.py",
"build/android/host_heartbeat.py",
"build/android/increase_size_for_speed.gypi",
"build/android/insert_chromium_version.gypi",
"build/android/install_emulator_deps.py",
"build/android/instr_action.gypi",
"build/android/java_cpp_enum.gypi",
"build/android/java_cpp_template.gypi",
"build/android/jinja_template.gypi",
"build/android/lighttpd_server.py",
"build/android/lint/OWNERS",
"build/android/lint/suppress.py",
"build/android/lint/suppressions.xml",
"build/android/lint_action.gypi",
"build/android/native_app_dependencies.gypi",
"build/android/ndk.gyp",
"build/android/pack_arm_relocations.gypi",
"build/android/provision_devices.py",
"build/android/push_libraries.gypi",
"build/android/rezip.gyp",
"build/android/rezip/BUILD.gn",
"build/android/rezip/RezipApk.java",
"build/android/screenshot.py",
"build/android/setup.gyp",
"build/android/strip_native_libraries.gypi",
"build/android/symbolize.py",
"build/android/symbolize_test.py",
"build/android/test_runner.py",
"build/android/tests/multiple_proguards/AndroidManifest.xml",
"build/android/tests/multiple_proguards/multiple_proguards.gyp",
"build/android/tests/multiple_proguards/proguard1.flags",
"build/android/tests/multiple_proguards/proguard2.flags",
"build/android/tests/multiple_proguards/src/dummy/DummyActivity.java",
"build/android/tests/multiple_proguards/src/dummy/NativeLibraries.java",
"build/android/tests/symbolize/Makefile",
"build/android/tests/symbolize/a.cc",
"build/android/tests/symbolize/b.cc",
"build/android/tests/symbolize/liba.so",
"build/android/tests/symbolize/libb.so",
"build/android/tombstones.py",
"build/android/update_verification.py",
"build/android/write_ordered_libraries.gypi",
"build/util/BUILD.gn",
"build/util/LASTCHANGE",
"build/util/LASTCHANGE.blink",
"build/util/lastchange.py",
"build/util/lib/common/__init__.py",
"build/util/lib/common/perf_result_data_type.py",
"build/util/lib/common/perf_tests_results_helper.py",
"build/util/lib/common/unittest_util.py",
"build/util/lib/common/util.py",
"build/util/version.gypi",
"build/util/version.py",
"third_party/WebKit/PerformanceTests/resources/jquery.tablesorter.min.js",
"third_party/WebKit/PerformanceTests/resources/statistics.js",
"third_party/chromite/ssh_keys/testing_rsa",
"third_party/chromite/ssh_keys/testing_rsa.pub",
"third_party/flot/jquery.flot.min.js",
"tools/perf/unit-info.json"
]
}
# 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))
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment