# Copyright (c) 2013 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("//build/config/ui.gni") import("//build/config/nacl/config.gni") if (is_android) { import("//build/config/android/rules.gni") } static_library("test_config") { testonly = true sources = [ "test_switches.cc", "test_switches.h", "test_timeouts.cc", "test_timeouts.h", ] deps = [ "//base", ] } static_library("test_support") { testonly = true sources = [ "../trace_event/trace_config_memory_test_util.h", "android/java_handler_thread_for_testing.cc", "android/java_handler_thread_for_testing.h", "android/test_system_message_handler_link_android.cc", "android/test_system_message_handler_link_android.h", "fuzzed_data_provider.cc", "fuzzed_data_provider.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", "histogram_tester.cc", "histogram_tester.h", "icu_test_util.cc", "icu_test_util.h", "ios/wait_util.h", "ios/wait_util.mm", "launcher/test_result.cc", "launcher/test_result.h", "launcher/test_results_tracker.h", "launcher/unit_test_launcher.h", "mock_callback.h", "mock_chrome_application_mac.h", "mock_chrome_application_mac.mm", "mock_devices_changed_observer.cc", "mock_devices_changed_observer.h", "mock_entropy_provider.cc", "mock_entropy_provider.h", "mock_log.cc", "mock_log.h", "multiprocess_test.cc", "multiprocess_test.h", "multiprocess_test_android.cc", "null_task_runner.cc", "null_task_runner.h", "opaque_ref_counted.cc", "opaque_ref_counted.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_base.cc", "power_monitor_test_base.h", "scoped_async_task_scheduler.cc", "scoped_async_task_scheduler.h", "scoped_command_line.cc", "scoped_command_line.h", "scoped_feature_list.cc", "scoped_feature_list.h", "scoped_locale.cc", "scoped_locale.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_task_scheduler.cc", "scoped_task_scheduler.h", "sequenced_task_runner_test_template.cc", "sequenced_task_runner_test_template.h", "sequenced_worker_pool_owner.cc", "sequenced_worker_pool_owner.h", "simple_test_clock.cc", "simple_test_clock.h", "simple_test_tick_clock.cc", "simple_test_tick_clock.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_file_util_android.cc", "test_file_util_linux.cc", "test_file_util_mac.cc", "test_file_util_posix.cc", "test_file_util_win.cc", "test_io_thread.cc", "test_io_thread.h", "test_listener_ios.h", "test_listener_ios.mm", "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_reg_util_win.cc", "test_reg_util_win.h", "test_shortcut_win.cc", "test_shortcut_win.h", "test_simple_task_runner.cc", "test_simple_task_runner.h", "test_suite.cc", "test_suite.h", "test_support_android.cc", "test_support_android.h", "test_support_ios.h", "test_support_ios.mm", "test_ui_thread_android.cc", "test_ui_thread_android.h", "thread_test_helper.cc", "thread_test_helper.h", "trace_event_analyzer.cc", "trace_event_analyzer.h", "trace_to_file.cc", "trace_to_file.h", "user_action_tester.cc", "user_action_tester.h", "values_test_util.cc", "values_test_util.h", ] if (is_ios) { sources += [ "launcher/unit_test_launcher_ios.cc" ] } else if (!is_nacl_nonsfi) { sources += [ "launcher/test_launcher.cc", "launcher/test_launcher.h", "launcher/test_launcher_tracer.cc", "launcher/test_launcher_tracer.h", "launcher/test_results_tracker.cc", "launcher/unit_test_launcher.cc", ] } configs += [ "//build/config:precompiled_headers" ] data = [ # The isolate needs this script for setting up the test. It's not actually # needed to run this target locally. "//testing/test_env.py", ] public_deps = [ ":test_config", "//base", "//base:base_static", "//base:i18n", ] deps = [ "//base/third_party/dynamic_annotations", "//testing/gmock", "//testing/gtest", "//third_party/icu:icuuc", "//third_party/libxml", ] if (!is_posix) { sources -= [ "scoped_locale.cc", "scoped_locale.h", ] } if (is_ios) { set_sources_assignment_filter([]) sources += [ "test_file_util_mac.cc" ] set_sources_assignment_filter(sources_assignment_filter) } if (is_mac) { libs = [ "AppKit.framework" ] } if (is_android) { deps += [ ":base_unittests_jni_headers", ":test_support_jni_headers", ] public_deps += [ ":test_support_java" ] } if (is_nacl_nonsfi) { sources += [ "launcher/test_launcher.h", "launcher/test_result.h", "launcher/unit_test_launcher.h", "launcher/unit_test_launcher_nacl_nonsfi.cc", ] sources -= [ "gtest_xml_util.cc", "gtest_xml_util.h", "icu_test_util.cc", "icu_test_util.h", "perf_test_suite.cc", "perf_test_suite.h", "scoped_path_override.cc", "scoped_path_override.h", "test_discardable_memory_allocator.cc", "test_discardable_memory_allocator.h", "test_file_util.cc", "test_file_util.h", "test_file_util_posix.cc", "test_suite.cc", "test_suite.h", "trace_to_file.cc", "trace_to_file.h", ] public_deps -= [ "//base:i18n" ] deps -= [ "//third_party/icu:icuuc", "//third_party/libxml", ] } } 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("test_launcher_nacl_nonsfi") { testonly = true sources = [ "launcher/test_launcher_nacl_nonsfi.cc", "launcher/test_launcher_nacl_nonsfi.h", ] deps = [ ":test_support", ] } 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 NativeLibrary unittests. shared_library("test_shared_library") { testonly = true sources = [ "test_shared_library.cc", ] deps = [ ":native_library_test_utils", ] } static_library("run_all_base_unittests") { # Only targets in base should depend on this, targets outside base # should depend on run_all_unittests above. visibility = [ "//base/*" ] testonly = true sources = [ "run_all_base_unittests.cc", ] deps = [ ":test_support", ] } if (is_linux) { shared_library("malloc_wrapper") { testonly = true sources = [ "malloc_wrapper.cc", ] deps = [ "//base", "//build/config/sanitizers:deps", ] } } if (is_android) { generate_jni("base_unittests_jni_headers") { sources = [ "android/java/src/org/chromium/base/ContentUriTestUtils.java", "android/java/src/org/chromium/base/TestSystemMessageHandler.java", "android/java/src/org/chromium/base/TestUiThread.java", ] jni_package = "base" } generate_jni("test_support_jni_headers") { sources = [ "android/java/src/org/chromium/base/MainReturnCodeResult.java", "android/java/src/org/chromium/base/MultiprocessTestClientLauncher.java", ] jni_package = "base" } android_library("test_support_java") { testonly = true deps = [ "//base:base_java", "//testing/android/native_test:native_main_runner_java", "//third_party/android_tools:android_support_annotations_java", "//third_party/jsr-305:jsr_305_javalib", ] srcjar_deps = [ ":test_support_java_aidl" ] java_files = [ "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_aidl("test_support_java_aidl") { testonly = true import_include = [ "android/java/src", "//base/android/java/src", ] sources = [ "android/java/src/org/chromium/base/ITestClient.aidl", ] } }