Update V8 to version 4.6.54.
[chromium-blink-merge.git] / testing / test.gni
blobcfdb2de98554f7e2c7ae8cb5240f3b29d888aae4
1 # Copyright 2015 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
5 # ==============================================================================
6 # TEST SETUP
7 # ==============================================================================
9 # Define a test as an executable (or apk on Android) with the "testonly" flag
10 # set.
11 template("test") {
12   if (is_android) {
13     import("//build/config/android/config.gni")
14     import("//build/config/android/rules.gni")
16     main_target_name = target_name
17     library_name = "_${target_name}__library"
18     apk_name = "${target_name}_apk"
20     shared_library(library_name) {
21       # Configs will always be defined since we set_defaults for a component
22       # in the main config. We want to use those rather than whatever came with
23       # the nested shared/static library inside the component.
24       configs = []  # Prevent list overwriting warning.
25       configs = invoker.configs
27       testonly = true
29       # Don't use "*" to forward all variables since some (like output_name
30       # and isolate_file) apply only to the APK below.
31       forward_variables_from(invoker,
32                              [
33                                "all_dependent_configs",
34                                "allow_circular_includes_from",
35                                "cflags",
36                                "cflags_c",
37                                "cflags_cc",
38                                "check_includes",
39                                "data",
40                                "data_deps",
41                                "datadeps",
42                                "defines",
43                                "forward_dependent_configs_from",
44                                "include_dirs",
45                                "ldflags",
46                                "lib_dirs",
47                                "libs",
48                                "output_extension",
49                                "output_name",
50                                "public",
51                                "public_configs",
52                                "public_deps",
53                                "sources",
54                                "visibility",
55                              ])
57       deps = []
58       if (!defined(invoker.use_launcher) || invoker.use_launcher) {
59         deps += [ "//testing/android/native_test:native_test_native_code" ]
60       }
61       if (defined(invoker.deps)) {
62         deps += invoker.deps
63       }
64     }
66     unittest_apk(apk_name) {
67       unittests_dep = ":$library_name"
68       apk_name = main_target_name
69       if (defined(invoker.output_name)) {
70         apk_name = invoker.output_name
71         unittests_binary = "lib${apk_name}.so"
72       }
73       deps = [
74         ":$library_name",
75       ]
76       if (defined(invoker.apk_deps)) {
77         deps += invoker.apk_deps
78       }
79       if (defined(invoker.apk_asset_location)) {
80         asset_location = invoker.apk_asset_location
81       }
82     }
84     test_name = main_target_name
85     if (defined(invoker.output_name)) {
86       test_name = invoker.output_name
87     }
88     test_runner_script_name = "${test_name}__test_runner_script"
89     test_runner_script(test_runner_script_name) {
90       test_name = test_name
91       test_type = "gtest"
92       test_suite = test_name
93       if (defined(invoker.isolate_file)) {
94         isolate_file = invoker.isolate_file
95       }
96     }
98     group(target_name) {
99       testonly = true
100       datadeps = [
101         ":$test_runner_script_name",
102       ]
103       deps = [
104         ":$library_name",
105         ":$apk_name",
106       ]
107     }
108   } else {
109     executable(target_name) {
110       forward_variables_from(invoker, "*")
112       testonly = true
114       if (!defined(invoker.deps)) {
115         deps = []
116       }
117       deps += [
118         # All shared libraries must have the sanitizer deps to properly link in
119         # asan mode (this target will be empty in other cases).
120         "//build/config/sanitizers:deps",
122         # Give tests the default manifest on Windows (a no-op elsewhere).
123         "//build/win:default_exe_manifest",
124       ]
125     }
126   }