Adding Peter Thatcher to the owners file.
[chromium-blink-merge.git] / testing / test.gni
blob3afb9f766a2a3f2adfc8ebc721eca9849c56bd96
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       # See above call.
28       set_sources_assignment_filter([])
30       testonly = true
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) {
70         deps += [ "//testing/android:native_test_native_code" ]
71       }
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     }
116     unittest_apk(apk_name) {
117       unittests_dep = ":$library_name"
118       apk_name = main_target_name
119       if (defined(invoker.output_name)) {
120         test_output_name = invoker.output_name
121         unittests_binary = "lib${test_output_name}.so"
122       }
123       deps = [
124         ":$library_name",
125       ]
126       if (defined(invoker.apk_deps)) {
127         deps += invoker.apk_deps
128       }
129       if (defined(invoker.apk_asset_location)) {
130         asset_location = invoker.apk_asset_location
131       }
132     }
134     group(target_name) {
135       testonly = true
137       deps = [
138         ":$library_name",
139         ":$apk_name",
140       ]
141     }
142   } else {
143     executable(target_name) {
144       # See above.
145       configs = []  # Prevent list overwriting warning.
146       configs = invoker.configs
148       # See above call.
149       set_sources_assignment_filter([])
151       testonly = true
153       if (defined(invoker.all_dependent_configs)) {
154         all_dependent_configs = invoker.all_dependent_configs
155       }
156       if (defined(invoker.allow_circular_includes_from)) {
157         allow_circular_includes_from = invoker.allow_circular_includes_from
158       }
159       if (defined(invoker.cflags)) {
160         cflags = invoker.cflags
161       }
162       if (defined(invoker.cflags_c)) {
163         cflags_c = invoker.cflags_c
164       }
165       if (defined(invoker.cflags_cc)) {
166         cflags_cc = invoker.cflags_cc
167       }
168       if (defined(invoker.cflags_objc)) {
169         cflags_objc = invoker.cflags_objc
170       }
171       if (defined(invoker.cflags_objcc)) {
172         cflags_objcc = invoker.cflags_objcc
173       }
174       if (defined(invoker.check_includes)) {
175         check_includes = invoker.check_includes
176       }
177       if (defined(invoker.data)) {
178         data = invoker.data
179       }
180       if (defined(invoker.data_deps)) {
181         data_deps = invoker.data_deps
182       }
183       if (defined(invoker.datadeps)) {
184         datadeps = invoker.datadeps
185       }
186       if (defined(invoker.defines)) {
187         defines = invoker.defines
188       }
190       # All shared libraries must have the sanitizer deps to properly link in
191       # asan mode (this target will be empty in other cases).
192       if (defined(invoker.deps)) {
193         deps = invoker.deps + [ "//build/config/sanitizers:deps" ]
194       } else {
195         deps = [
196           "//build/config/sanitizers:deps",
197         ]
198       }
199       if (defined(invoker.direct_dependent_configs)) {
200         direct_dependent_configs = invoker.direct_dependent_configs
201       }
202       if (defined(invoker.forward_dependent_configs_from)) {
203         forward_dependent_configs_from = invoker.forward_dependent_configs_from
204       }
205       if (defined(invoker.include_dirs)) {
206         include_dirs = invoker.include_dirs
207       }
208       if (defined(invoker.ldflags)) {
209         ldflags = invoker.ldflags
210       }
211       if (defined(invoker.lib_dirs)) {
212         lib_dirs = invoker.lib_dirs
213       }
214       if (defined(invoker.libs)) {
215         libs = invoker.libs
216       }
217       if (defined(invoker.output_extension)) {
218         output_extension = invoker.output_extension
219       }
220       if (defined(invoker.output_name)) {
221         output_name = invoker.output_name
222       }
223       if (defined(invoker.public)) {
224         public = invoker.public
225       }
226       if (defined(invoker.public_configs)) {
227         public_configs = invoker.public_configs
228       }
229       if (defined(invoker.public_deps)) {
230         public_deps = invoker.public_deps
231       }
232       if (defined(invoker.sources)) {
233         sources = invoker.sources
234       }
235       if (defined(invoker.visibility)) {
236         visibility = invoker.visibility
237       }
238     }
239   }