unplugged-system/external/cronet/base/test/BUILD.gn

548 lines
16 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Copyright 2013 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/compiled_action.gni")
import("//build/config/chromeos/ui_mode.gni")
import("//build/config/features.gni")
import("//build/config/nacl/config.gni")
import("//build/config/ui.gni")
import("//build_overrides/build.gni")
if (is_android) {
import("//build/config/android/rules.gni")
}
if (is_ios) {
import("//build/config/ios/rules.gni")
}
static_library("test_config") {
testonly = true
sources = [
"test_switches.cc",
"test_switches.h",
"test_timeouts.cc",
"test_timeouts.h",
]
deps = [
"//base",
"//base:clang_profiling_buildflags",
"//build:chromeos_buildflags",
]
}
static_library("test_support") {
testonly = true
sources = [
"../task/sequence_manager/test/fake_task.cc",
"../task/sequence_manager/test/fake_task.h",
"../task/sequence_manager/test/mock_time_domain.cc",
"../task/sequence_manager/test/mock_time_domain.h",
"../task/sequence_manager/test/mock_time_message_pump.cc",
"../task/sequence_manager/test/mock_time_message_pump.h",
"../task/sequence_manager/test/sequence_manager_for_test.cc",
"../task/sequence_manager/test/sequence_manager_for_test.h",
"../task/sequence_manager/test/test_task_time_observer.h",
"../timer/mock_timer.cc",
"../timer/mock_timer.h",
"allow_check_is_test_for_testing.h",
"bind.cc",
"bind.h",
"copy_only_int.cc",
"copy_only_int.h",
"gmock_callback_support.h",
"gmock_move_support.h",
"gtest_links.cc",
"gtest_links.h",
"gtest_tags.cc",
"gtest_tags.h",
"gtest_util.cc",
"gtest_util.h",
"gtest_xml_unittest_result_printer.cc",
"gtest_xml_unittest_result_printer.h",
"gtest_xml_util.cc",
"gtest_xml_util.h",
"icu_test_util.cc",
"icu_test_util.h",
"launcher/test_result.cc",
"launcher/test_result.h",
"launcher/test_results_tracker.h",
"launcher/unit_test_launcher.h",
"metrics/histogram_enum_reader.cc",
"metrics/histogram_enum_reader.h",
"metrics/histogram_tester.cc",
"metrics/histogram_tester.h",
"metrics/user_action_tester.cc",
"metrics/user_action_tester.h",
"mock_callback.h",
"mock_devices_changed_observer.cc",
"mock_devices_changed_observer.h",
"mock_entropy_provider.cc",
"mock_entropy_provider.h",
"mock_log.cc",
"mock_log.h",
"move_only_int.h",
"multiprocess_test.h",
"null_task_runner.cc",
"null_task_runner.h",
"perf_log.cc",
"perf_log.h",
"perf_test_suite.cc",
"perf_test_suite.h",
"perf_time_logger.cc",
"perf_time_logger.h",
"power_monitor_test.cc",
"power_monitor_test.h",
"power_monitor_test_utils.cc",
"power_monitor_test_utils.h",
"rectify_callback.h",
"rectify_callback_internal.h",
"repeating_test_future.h",
"scoped_command_line.cc",
"scoped_command_line.h",
"scoped_feature_list.cc",
"scoped_feature_list.h",
"scoped_mock_clock_override.cc",
"scoped_mock_clock_override.h",
"scoped_mock_time_message_loop_task_runner.cc",
"scoped_mock_time_message_loop_task_runner.h",
"scoped_path_override.cc",
"scoped_path_override.h",
"scoped_run_loop_timeout.cc",
"scoped_run_loop_timeout.h",
"sequenced_task_runner_test_template.cc",
"sequenced_task_runner_test_template.h",
"simple_test_clock.cc",
"simple_test_clock.h",
"simple_test_tick_clock.cc",
"simple_test_tick_clock.h",
"task_environment.cc",
"task_environment.h",
"task_runner_test_template.cc",
"task_runner_test_template.h",
"test_discardable_memory_allocator.cc",
"test_discardable_memory_allocator.h",
"test_file_util.cc",
"test_file_util.h",
"test_future.h",
"test_future_internal.h",
"test_io_thread.cc",
"test_io_thread.h",
"test_message_loop.cc",
"test_message_loop.h",
"test_mock_time_task_runner.cc",
"test_mock_time_task_runner.h",
"test_pending_task.cc",
"test_pending_task.h",
"test_shared_memory_util.cc",
"test_shared_memory_util.h",
"test_simple_task_runner.cc",
"test_simple_task_runner.h",
"test_suite.cc",
"test_suite.h",
"test_waitable_event.cc",
"test_waitable_event.h",
"thread_test_helper.cc",
"thread_test_helper.h",
"values_test_util.cc",
"values_test_util.h",
"with_feature_override.cc",
"with_feature_override.h",
]
configs += [ "//build/config:precompiled_headers" ]
public_deps = [
":test_config",
"//base",
"//base:base_static",
"//base:i18n",
"//testing/gmock",
"//testing/gtest",
]
deps = [
"//base/third_party/dynamic_annotations",
"//build:chromeos_buildflags",
"//third_party/icu:icuuc",
"//third_party/libxml:libxml_utils",
"//third_party/libxml:xml_reader",
]
if (enable_base_tracing) {
public_deps += [ "//third_party/perfetto:perfetto_test_support" ]
if (!is_chromeos) {
# TODO(rasikan): Add to ios and chromeos when unblocked by the chromiumos
# change to add the shared lib to the chrome-binary-tests directory.
public_deps += [ ":test_trace_processor" ]
if (is_ios) {
deps += [
":test_trace_processor+bundle",
":test_trace_processor+link",
]
}
}
}
if (is_win) {
sources += [
"async_results_test_values_win.h",
"fake_iasync_operation_win.h",
"scoped_os_info_override_win.cc",
"scoped_os_info_override_win.h",
"test_file_util_win.cc",
"test_reg_util_win.cc",
"test_reg_util_win.h",
"test_shortcut_win.cc",
"test_shortcut_win.h",
]
}
if (is_chromeos) {
sources += [
"scoped_chromeos_version_info.cc",
"scoped_chromeos_version_info.h",
"scoped_running_on_chromeos.cc",
"scoped_running_on_chromeos.h",
]
}
if (is_linux || is_chromeos) {
sources += [ "test_file_util_linux.cc" ]
public_deps += [ "//third_party/test_fonts/fontconfig:test_support" ]
}
if (is_mac) {
frameworks = [ "AppKit.framework" ]
sources += [
"mock_chrome_application_mac.h",
"mock_chrome_application_mac.mm",
"test_file_util_mac.cc",
]
}
if (is_android) {
sources += [
"android/java_handler_thread_helpers.cc",
"android/java_handler_thread_helpers.h",
"android/url_utils.cc",
"android/url_utils.h",
"multiprocess_test_android.cc",
"reached_code_profiler_android.cc",
"test_file_util_android.cc",
"test_file_util_linux.cc",
"test_support_android.cc",
"test_support_android.h",
"thread_pool_test_helpers_android.cc",
]
deps += [
":base_unittests_jni_headers",
":test_support_jni_headers",
]
public_deps += [ ":test_support_java" ]
}
if (is_ios) {
sources += [
"ios/wait_util.h",
"ios/wait_util.mm",
"test_file_util_mac.cc",
"test_listener_ios.h",
"test_listener_ios.mm",
"test_support_ios.h",
"test_support_ios.mm",
]
deps += [
":google_test_runner_shared_headers",
"//build:blink_buildflags",
]
# With blink, we use the standard unit_test_launcher.cc.
if (!use_blink) {
sources += [ "launcher/unit_test_launcher_ios.cc" ]
}
}
if (is_posix || is_fuchsia) {
sources += [
"scoped_locale.cc",
"scoped_locale.h",
"test_file_util_posix.cc",
]
}
if (is_fuchsia) {
deps += [
"//third_party/fuchsia-sdk/sdk/fidl/fuchsia.io:fuchsia.io_cpp_hlcpp_conversion",
"//third_party/fuchsia-sdk/sdk/pkg/zx",
]
public_deps += [ "//third_party/fuchsia-sdk/sdk/pkg/sys_cpp" ]
sources += [
"../fuchsia/test_component_context_for_process.cc",
"../fuchsia/test_component_context_for_process.h",
"scoped_dev_zero_fuchsia.cc",
"scoped_dev_zero_fuchsia.h",
]
}
if (use_blink) {
sources += [
"launcher/test_launcher.cc",
"launcher/test_launcher.h",
"launcher/test_launcher_test_utils.cc",
"launcher/test_launcher_test_utils.h",
"launcher/test_launcher_tracer.cc",
"launcher/test_launcher_tracer.h",
"launcher/test_results_tracker.cc",
"launcher/unit_test_launcher.cc",
"multiprocess_test.cc",
]
}
if (enable_base_tracing) {
sources += [
"../trace_event/trace_config_memory_test_util.h",
"trace_event_analyzer.cc",
"trace_event_analyzer.h",
"trace_test_utils.cc",
"trace_test_utils.h",
"trace_to_file.cc",
"trace_to_file.h",
]
}
}
config("base_test_implementation") {
defines = [ "IS_BASE_TEST_IMPL" ]
}
config("perf_test_config") {
defines = [ "PERF_TEST" ]
}
# This is a source set instead of a static library because it seems like some
# linkers get confused when "main" is in a static library, and if you link to
# this, you always want the object file anyway.
source_set("test_support_perf") {
testonly = true
sources = [ "run_all_perftests.cc" ]
deps = [
":test_support",
"//base",
"//testing/gtest",
]
public_configs = [ ":perf_test_config" ]
}
static_library("run_all_unittests") {
testonly = true
sources = [ "run_all_unittests.cc" ]
deps = [ ":test_support" ]
}
# These sources are linked into both the base_unittests binary and the test
# shared library target below.
source_set("native_library_test_utils") {
testonly = true
sources = [
"native_library_test_utils.cc",
"native_library_test_utils.h",
]
}
# This shared library is dynamically loaded by ImmediateCrash unittests.
shared_library("immediate_crash_test_helper") {
sources = [ "immediate_crash_test_helper.cc" ]
# Note: the helper has a header-only dependency on //base/immediate_helper.h.
# However, the build rule intentionally omits an explicit //base dependency
# to avoid potential ODR violations and minimize the amount of code linked in.
# Try to minimize the risk of non-official builds generating different code.
if (!is_official_build) {
configs -= [ "//build/config/compiler:default_optimization" ]
configs += [ "//build/config/compiler:optimize_max" ]
}
# Disable sanitization: sanitized builds are assumed to be saner than normal,
# and can affect codegen in surprising ways, which breaks the tests.
configs -= [ "//build/config/sanitizers:default_sanitizer_flags" ]
if (is_android) {
configs -= [ "//build/config/android:hide_all_but_jni_onload" ]
}
}
# This shared library is dynamically loaded by NativeLibrary unittests.
shared_library("test_shared_library") {
testonly = true
sources = [ "test_shared_library.cc" ]
deps = [ ":native_library_test_utils" ]
}
if (is_fuchsia || is_linux || is_chromeos) {
shared_library("malloc_wrapper") {
testonly = true
sources = [ "malloc_wrapper.cc" ]
deps = [ "//base" ]
}
}
if (is_android) {
generate_jni("base_unittests_jni_headers") {
testonly = true
sources = [
"android/java/src/org/chromium/base/ContentUriTestUtils.java",
"android/java/src/org/chromium/base/JavaHandlerThreadHelpers.java",
]
}
generate_jni("test_support_jni_headers") {
testonly = true
sources = [
"android/java/src/org/chromium/base/MainReturnCodeResult.java",
"android/java/src/org/chromium/base/MultiprocessTestClientLauncher.java",
"android/javatests/src/org/chromium/base/test/ReachedCodeProfiler.java",
"android/javatests/src/org/chromium/base/test/task/ThreadPoolTestHelpers.java",
"android/javatests/src/org/chromium/base/test/util/UrlUtils.java",
]
}
android_library("test_support_java") {
testonly = true
deps = [
"//base:base_java",
"//base:jni_java",
"//base:process_launcher_java",
"//testing/android/native_test:native_main_runner_java",
"//third_party/android_deps:com_google_code_findbugs_jsr305_java",
]
srcjar_deps = [ ":test_support_java_aidl" ]
sources = [
"android/java/src/org/chromium/base/GarbageCollectionTestUtils.java",
"android/java/src/org/chromium/base/MainReturnCodeResult.java",
"android/java/src/org/chromium/base/MultiprocessTestClientLauncher.java",
"android/java/src/org/chromium/base/MultiprocessTestClientService.java",
"android/java/src/org/chromium/base/MultiprocessTestClientService0.java",
"android/java/src/org/chromium/base/MultiprocessTestClientService1.java",
"android/java/src/org/chromium/base/MultiprocessTestClientService2.java",
"android/java/src/org/chromium/base/MultiprocessTestClientService3.java",
"android/java/src/org/chromium/base/MultiprocessTestClientService4.java",
"android/java/src/org/chromium/base/MultiprocessTestClientService5.java",
"android/java/src/org/chromium/base/MultiprocessTestClientService6.java",
"android/java/src/org/chromium/base/MultiprocessTestClientService7.java",
"android/java/src/org/chromium/base/MultiprocessTestClientService8.java",
"android/java/src/org/chromium/base/MultiprocessTestClientService9.java",
"android/java/src/org/chromium/base/MultiprocessTestClientServiceDelegate.java",
]
}
android_aidl("test_support_java_aidl") {
testonly = true
import_include = [
"android/java/src",
"//base/android/java/src",
]
sources = [
"android/java/src/org/chromium/base/ITestCallback.aidl",
"android/java/src/org/chromium/base/ITestController.aidl",
]
}
}
if (is_ios) {
source_set("google_test_runner_shared_headers") {
sources = [ "ios/google_test_runner_delegate.h" ]
}
source_set("google_test_runner") {
sources = [ "ios/google_test_runner.mm" ]
deps = [
":google_test_runner_shared_headers",
"//base",
]
frameworks = [ "UIKit.framework" ]
configs += [
"//build/config/compiler:enable_arc",
"//build/config/ios:xctest_config",
]
}
}
# Trivial executable which outputs space-delimited argv to stdout,
# used for testing.
executable("test_child_process") {
testonly = true
sources = [ "test_child_process.cc" ]
}
if (enable_base_tracing) {
# We encapsulate the trace processor in a separate shared library to prevent
# any duplicate symbol issues. Perfetto symbols are exported by chromiums
# base via a public_dep on libperfetto; libtrace_processor also depends on
# these symbols. So we “hide” the perfetto symbols exported from this
# interface. Also, chrome targets depend on chromium_sqlite and the trace
# processor depends on dev_sqlite. The two share the same symbols but have
# different implementations, so we need to hide dev_sqlite in this shared
# library even in non-component builds to prevent duplicate symbols.
_target_type = "shared_library"
if (is_ios) {
_target_type = "ios_framework_bundle"
}
target(_target_type, "test_trace_processor") {
defines = [ "TEST_TRACE_PROCESSOR_IMPL" ]
testonly = true
sources = [
"test_trace_processor.cc",
"test_trace_processor.h",
"test_trace_processor_export.h",
]
deps = [
"//third_party/abseil-cpp:absl",
"//third_party/perfetto:libtrace_processor",
]
if (is_android) {
configs -= [ "//build/config/android:hide_all_but_jni_onload" ]
}
if (is_ios) {
info_plist = "test_trace_processor.plist"
output_name = "TestTraceProcessor"
bundle_deps_filter = [ "//third_party/icu:icudata" ]
}
# Set rpath on dependent tests so that they can find the shared library
# in a non-component build.
if (!is_component_build) {
all_dependent_configs = []
if (is_linux || is_chromeos) {
all_dependent_configs +=
[ "//build/config/gcc:rpath_for_built_shared_libraries" ]
}
if (is_mac) {
# We need the lib to be in $root_out_dir/Libraries so the library is where
# the linker expects it, since we set the install_name flag. We need to
# set this flag so that the library can be found when it is bundled in the
# Content Shell Framework (see test_trace_processor_bundle_data).
output_dir = "$root_out_dir/Libraries"
ldflags = [ "-Wl,-install_name,@loader_path/Libraries/libtest_trace_processor.dylib" ]
}
}
}
if (!is_component_build && is_mac) {
bundle_data("test_trace_processor_bundle_data") {
testonly = true
sources = [ "$root_out_dir/Libraries/libtest_trace_processor.dylib" ]
outputs = [ "{{bundle_contents_dir}}/Libraries/{{source_file_part}}" ]
public_deps = [ ":test_trace_processor" ]
}
}
}