Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(189)

Unified Diff: testing/test.gni

Issue 1854233002: Reland 2 of GN: Make breakpad_unittests & sandbox_linux_unittests use test() (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@test-minor-renames
Patch Set: Fix PIE errors, fix component mode. Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sandbox/linux/sandbox_linux.gypi ('k') | tools/android/forwarder2/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: testing/test.gni
diff --git a/testing/test.gni b/testing/test.gni
index b438780449a0de26ed2a813fc26bf3c99af768e4..13c434238acce1cc2fe63e34f783bf17fc509165 100644
--- a/testing/test.gni
+++ b/testing/test.gni
@@ -8,123 +8,147 @@
# Define a test as an executable (or apk on Android) with the "testonly" flag
# set.
+# Variable:
+# use_raw_android_executable: Use executable() rather than android_apk().
template("test") {
if (is_android) {
import("//build/config/android/config.gni")
import("//build/config/android/rules.gni")
- _library_target = "_${target_name}__library"
- _apk_target = "${target_name}_apk"
+ _use_raw_android_executable = defined(invoker.use_raw_android_executable) &&
+ invoker.use_raw_android_executable
- shared_library(_library_target) {
- # Configs will always be defined since we set_defaults for a component
- # in the main config. We want to use those rather than whatever came with
- # the nested shared/static library inside the component.
- configs = [] # Prevent list overwriting warning.
- configs = invoker.configs
+ # output_name is used to allow targets with the same name but in different
+ # packages to still produce unique runner scripts.
+ _output_name = invoker.target_name
+ if (defined(invoker.output_name)) {
+ _output_name = invoker.output_name
+ }
- testonly = true
+ if (_use_raw_android_executable) {
+ _exec_target = "${target_name}__exec"
+ _dist_target = "${target_name}__dist"
+ _exec_output =
+ "$target_out_dir/${invoker.target_name}/${invoker.target_name}"
+
+ executable(_exec_target) {
+ # Configs will always be defined since we set_defaults in BUILDCONFIG.gn.
+ configs = []
+ data_deps = []
+ forward_variables_from(invoker, "*", [ "extra_dist_files" ])
+ testonly = true
+
+ # Thanks to the set_defaults() for test(), configs are initialized with
+ # the default shared_library configs rather than executable configs.
+ configs -= [
+ "//build/config:shared_library_config",
+ "//build/config/android:hide_native_jni_exports",
+ ]
+ configs += [ "//build/config:executable_config" ]
+
+ # Don't output to the root or else conflict with the group() below.
+ output_name = rebase_path(_exec_output, root_out_dir)
+ if (is_component_build || is_asan) {
+ data_deps += [ "//build/android:cpplib_stripped" ]
+ }
+ }
- # Don't use "*" to forward all variables since some (like output_name
- # and isolate_file) apply only to the APK below.
- deps = []
- forward_variables_from(invoker,
- [
- "all_dependent_configs",
- "allow_circular_includes_from",
- "cflags",
- "cflags_c",
- "cflags_cc",
- "check_includes",
- "data",
- "data_deps",
- "datadeps",
- "defines",
- "deps",
- "include_dirs",
- "ldflags",
- "lib_dirs",
- "libs",
- "output_extension",
- "output_name",
- "public",
- "public_configs",
- "public_deps",
- "sources",
- "visibility",
- ])
-
- if (!defined(invoker.use_default_launcher) ||
- invoker.use_default_launcher) {
- deps += [ "//testing/android/native_test:native_test_native_code" ]
+ create_native_executable_dist(_dist_target) {
+ testonly = true
+ dist_dir = "$root_out_dir/$target_name"
+ binary = _exec_output
+ deps = [
+ ":$_exec_target",
+ ]
+ if (defined(invoker.extra_dist_files)) {
+ extra_files = invoker.extra_dist_files
+ }
}
- }
+ } else {
+ _library_target = "_${target_name}__library"
+ _apk_target = "${target_name}_apk"
+ _apk_specific_vars = [
+ "android_manifest",
+ "enable_multidex",
+ "use_default_launcher",
+ "write_asset_list",
+ ]
+ shared_library(_library_target) {
+ # Configs will always be defined since we set_defaults in BUILDCONFIG.gn.
+ configs = [] # Prevent list overwriting warning.
+ configs = invoker.configs
+ testonly = true
- unittest_apk(_apk_target) {
- forward_variables_from(invoker,
- [
- "android_manifest",
- "deps",
- "enable_multidex",
- "use_default_launcher",
- "write_asset_list",
- ])
- unittests_dep = ":$_library_target"
- apk_name = invoker.target_name
- if (defined(invoker.output_name)) {
- apk_name = invoker.output_name
- unittests_binary = "lib${apk_name}.so"
- install_script_name = "install_${invoker.output_name}"
+ deps = []
+ forward_variables_from(invoker,
+ "*",
+ _apk_specific_vars + [
+ "isolate_file",
+ "visibility",
+ ])
+
+ if (!defined(invoker.use_default_launcher) ||
+ invoker.use_default_launcher) {
+ deps += [ "//testing/android/native_test:native_test_native_code" ]
+ }
+ }
+ unittest_apk(_apk_target) {
+ forward_variables_from(invoker, _apk_specific_vars + [ "deps" ])
+ unittests_dep = ":$_library_target"
+ apk_name = invoker.target_name
+ if (defined(invoker.output_name)) {
+ apk_name = invoker.output_name
+ unittests_binary = "lib${apk_name}.so"
+ install_script_name = "install_${invoker.output_name}"
+ }
+ deps += [ ":$_library_target" ]
}
- deps += [ ":$_library_target" ]
- }
- # output_name is used to allow targets with the same name but in different
- # packages to still produce unique runner scripts.
- _output_name = invoker.target_name
- if (defined(invoker.output_name)) {
- _output_name = invoker.output_name
+ # Incremental test targets work only for .apks.
+ _incremental_test_runner_target =
+ "${_output_name}_incremental__test_runner_script"
+ test_runner_script(_incremental_test_runner_target) {
+ forward_variables_from(invoker, [ "isolate_file" ])
+ apk_target = ":$_apk_target"
+ test_name = "${_output_name}_incremental"
+ test_type = "gtest"
+ test_suite = _output_name
+ incremental_install = true
+ }
+ group("${target_name}_incremental") {
+ testonly = true
+ datadeps = [
+ ":$_incremental_test_runner_target",
+ ]
+ deps = [
+ ":${_apk_target}_incremental",
+ ]
+ }
}
+
_test_runner_target = "${_output_name}__test_runner_script"
test_runner_script(_test_runner_target) {
- apk_target = ":$_apk_target"
- test_name = _output_name
- test_type = "gtest"
- test_suite = _output_name
- if (defined(invoker.isolate_file)) {
- isolate_file = invoker.isolate_file
+ forward_variables_from(invoker, [ "isolate_file" ])
+ if (_use_raw_android_executable) {
+ executable_dist_dir = "$root_out_dir/$_dist_target"
+ } else {
+ apk_target = ":$_apk_target"
}
- }
- _incremental_test_runner_target =
- "${_output_name}_incremental__test_runner_script"
- test_runner_script(_incremental_test_runner_target) {
- apk_target = ":$_apk_target"
- test_name = "${_output_name}_incremental"
+ test_name = _output_name
test_type = "gtest"
test_suite = _output_name
- incremental_install = true
- if (defined(invoker.isolate_file)) {
- isolate_file = invoker.isolate_file
- }
}
group(target_name) {
testonly = true
- datadeps = [
- ":$_test_runner_target",
- ]
deps = [
- ":$_apk_target",
- ]
- }
- group("${target_name}_incremental") {
- testonly = true
- datadeps = [
- ":$_incremental_test_runner_target",
- ]
- deps = [
- ":${_apk_target}_incremental",
+ ":$_test_runner_target",
]
+ if (_use_raw_android_executable) {
+ deps += [ ":$_dist_target" ]
+ } else {
+ deps += [ ":$_apk_target" ]
+ }
}
# TODO(GYP): Delete this after we've converted everything to GN.
« no previous file with comments | « sandbox/linux/sandbox_linux.gypi ('k') | tools/android/forwarder2/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698