[go: nahoru, domu]

blob: a224ef2918ec5179c94021c1372ffa7ff79f3169 [file] [log] [blame]
qsrc6c612c2015-01-13 22:07:481# 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.
qsrfb5251d12015-01-21 15:57:224
5# ==============================================================================
6# TEST SETUP
7# ==============================================================================
8
9# Define a test as an executable (or apk on Android) with the "testonly" flag
10# set.
11template("test") {
12 if (is_android) {
13 import("//build/config/android/config.gni")
14 import("//build/config/android/rules.gni")
15
16 main_target_name = target_name
17 library_name = "_${target_name}__library"
18 apk_name = "${target_name}_apk"
19
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
26
27 # See above call.
28 set_sources_assignment_filter([])
29
30 testonly = true
31
32 if (defined(invoker.all_dependent_configs)) {
33 all_dependent_configs = invoker.all_dependent_configs
34 }
35 if (defined(invoker.allow_circular_includes_from)) {
36 allow_circular_includes_from = invoker.allow_circular_includes_from
37 }
38 if (defined(invoker.cflags)) {
39 cflags = invoker.cflags
40 }
41 if (defined(invoker.cflags_c)) {
42 cflags_c = invoker.cflags_c
43 }
44 if (defined(invoker.cflags_cc)) {
45 cflags_cc = invoker.cflags_cc
46 }
47 if (defined(invoker.cflags_objc)) {
48 cflags_objc = invoker.cflags_objc
49 }
50 if (defined(invoker.cflags_objcc)) {
51 cflags_objcc = invoker.cflags_objcc
52 }
53 if (defined(invoker.check_includes)) {
54 check_includes = invoker.check_includes
55 }
56 if (defined(invoker.data)) {
57 data = invoker.data
58 }
59 if (defined(invoker.data_deps)) {
60 data_deps = invoker.data_deps
61 }
62 if (defined(invoker.datadeps)) {
63 datadeps = invoker.datadeps
64 }
65 if (defined(invoker.defines)) {
66 defines = invoker.defines
67 }
68 deps = []
69 if (!defined(invoker.use_launcher) || invoker.use_launcher) {
jbudorick6ab224952015-04-09 21:51:5570 deps += [ "//testing/android/native_test:native_test_native_code" ]
qsrfb5251d12015-01-21 15:57:2271 }
72 if (defined(invoker.deps)) {
73 deps += invoker.deps
74 }
75 if (defined(invoker.direct_dependent_configs)) {
76 direct_dependent_configs = invoker.direct_dependent_configs
77 }
78 if (defined(invoker.forward_dependent_configs_from)) {
79 forward_dependent_configs_from = invoker.forward_dependent_configs_from
80 }
81 if (defined(invoker.include_dirs)) {
82 include_dirs = invoker.include_dirs
83 }
84 if (defined(invoker.ldflags)) {
85 ldflags = invoker.ldflags
86 }
87 if (defined(invoker.lib_dirs)) {
88 lib_dirs = invoker.lib_dirs
89 }
90 if (defined(invoker.libs)) {
91 libs = invoker.libs
92 }
93 if (defined(invoker.output_extension)) {
94 output_extension = invoker.output_extension
95 }
96 if (defined(invoker.output_name)) {
97 output_name = invoker.output_name
98 }
99 if (defined(invoker.public)) {
100 public = invoker.public
101 }
102 if (defined(invoker.public_configs)) {
103 public_configs = invoker.public_configs
104 }
105 if (defined(invoker.public_deps)) {
106 public_deps = invoker.public_deps
107 }
108 if (defined(invoker.sources)) {
109 sources = invoker.sources
110 }
111 if (defined(invoker.visibility)) {
112 visibility = invoker.visibility
113 }
114 }
115
116 unittest_apk(apk_name) {
117 unittests_dep = ":$library_name"
118 apk_name = main_target_name
119 if (defined(invoker.output_name)) {
mswef55bcf2015-05-06 22:06:58120 apk_name = invoker.output_name
121 unittests_binary = "lib${apk_name}.so"
qsrfb5251d12015-01-21 15:57:22122 }
123 deps = [
124 ":$library_name",
125 ]
126 if (defined(invoker.apk_deps)) {
127 deps += invoker.apk_deps
128 }
Benjamin Lerman45c02272015-01-22 10:05:04129 if (defined(invoker.apk_asset_location)) {
130 asset_location = invoker.apk_asset_location
131 }
qsrfb5251d12015-01-21 15:57:22132 }
133
mikecase56d80d72015-06-03 00:57:26134 test_name = main_target_name
135 if (defined(invoker.output_name)) {
136 test_name = invoker.output_name
137 }
138 test_runner_script_name = "${test_name}__test_runner_script"
139 test_runner_script(test_runner_script_name) {
140 test_name = test_name
141 test_type = "gtest"
142 test_suite = test_name
143 if (defined(invoker.isolate_file)) {
144 isolate_file = invoker.isolate_file
145 }
146 }
147
qsrfb5251d12015-01-21 15:57:22148 group(target_name) {
149 testonly = true
mikecase56d80d72015-06-03 00:57:26150 datadeps = [
151 ":$test_runner_script_name",
152 ]
qsrfb5251d12015-01-21 15:57:22153 deps = [
154 ":$library_name",
155 ":$apk_name",
156 ]
157 }
158 } else {
159 executable(target_name) {
160 # See above.
161 configs = [] # Prevent list overwriting warning.
162 configs = invoker.configs
163
164 # See above call.
165 set_sources_assignment_filter([])
166
167 testonly = true
168
169 if (defined(invoker.all_dependent_configs)) {
170 all_dependent_configs = invoker.all_dependent_configs
171 }
172 if (defined(invoker.allow_circular_includes_from)) {
173 allow_circular_includes_from = invoker.allow_circular_includes_from
174 }
175 if (defined(invoker.cflags)) {
176 cflags = invoker.cflags
177 }
178 if (defined(invoker.cflags_c)) {
179 cflags_c = invoker.cflags_c
180 }
181 if (defined(invoker.cflags_cc)) {
182 cflags_cc = invoker.cflags_cc
183 }
184 if (defined(invoker.cflags_objc)) {
185 cflags_objc = invoker.cflags_objc
186 }
187 if (defined(invoker.cflags_objcc)) {
188 cflags_objcc = invoker.cflags_objcc
189 }
190 if (defined(invoker.check_includes)) {
191 check_includes = invoker.check_includes
192 }
193 if (defined(invoker.data)) {
194 data = invoker.data
195 }
196 if (defined(invoker.data_deps)) {
197 data_deps = invoker.data_deps
198 }
199 if (defined(invoker.datadeps)) {
200 datadeps = invoker.datadeps
201 }
202 if (defined(invoker.defines)) {
203 defines = invoker.defines
204 }
205
qsrfb5251d12015-01-21 15:57:22206 if (defined(invoker.deps)) {
brettw2e2220c2015-07-21 18:56:35207 deps = invoker.deps
qsrfb5251d12015-01-21 15:57:22208 } else {
brettw2e2220c2015-07-21 18:56:35209 deps = []
qsrfb5251d12015-01-21 15:57:22210 }
brettw2e2220c2015-07-21 18:56:35211 deps += [
212 # All shared libraries must have the sanitizer deps to properly link in
213 # asan mode (this target will be empty in other cases).
214 "//build/config/sanitizers:deps",
215
216 # Give tests the default manifest on Windows (a no-op elsewhere).
217 "//build/win:default_exe_manifest",
218 ]
219
qsrfb5251d12015-01-21 15:57:22220 if (defined(invoker.direct_dependent_configs)) {
221 direct_dependent_configs = invoker.direct_dependent_configs
222 }
223 if (defined(invoker.forward_dependent_configs_from)) {
224 forward_dependent_configs_from = invoker.forward_dependent_configs_from
225 }
226 if (defined(invoker.include_dirs)) {
227 include_dirs = invoker.include_dirs
228 }
229 if (defined(invoker.ldflags)) {
230 ldflags = invoker.ldflags
231 }
232 if (defined(invoker.lib_dirs)) {
233 lib_dirs = invoker.lib_dirs
234 }
235 if (defined(invoker.libs)) {
236 libs = invoker.libs
237 }
238 if (defined(invoker.output_extension)) {
239 output_extension = invoker.output_extension
240 }
241 if (defined(invoker.output_name)) {
242 output_name = invoker.output_name
243 }
244 if (defined(invoker.public)) {
245 public = invoker.public
246 }
247 if (defined(invoker.public_configs)) {
248 public_configs = invoker.public_configs
249 }
250 if (defined(invoker.public_deps)) {
251 public_deps = invoker.public_deps
252 }
253 if (defined(invoker.sources)) {
254 sources = invoker.sources
255 }
256 if (defined(invoker.visibility)) {
257 visibility = invoker.visibility
258 }
259 }
260 }
261}