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

Unified Diff: testing/test.gni

Issue 1904823003: Generate Android .isolate files used for test()s (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: revert to PS2 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 | « testing/generate_isolate.py ('k') | no next file » | 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 8434fc5b3b48ca2fea3d282587f26e354e4c5d32..aadd9cc65ece868382f1aa055439e33741739943 100644
--- a/testing/test.gni
+++ b/testing/test.gni
@@ -6,6 +6,56 @@
# TEST SETUP
# ==============================================================================
+template("_gen_isolate") {
+ testonly = true
+ _runtime_deps_file = "$target_gen_dir/$target_name.runtime_deps"
+ group("${target_name}__write_deps") {
+ forward_variables_from(invoker,
+ [
+ "data",
+ "data_deps",
+ "deps",
+ "public_deps",
+ ])
+ write_runtime_deps = _runtime_deps_file
+ }
+
+ action(target_name) {
+ script = "//testing/generate_isolate.py"
+ outputs = [
+ invoker.output,
+ ]
+ args = [
+ "--output-directory=.",
+ "--out-file",
+ rebase_path(invoker.output, root_build_dir),
+ "--runtime-deps-file",
+ rebase_path(_runtime_deps_file, root_build_dir),
+ ]
+ if (is_android) {
+ args += [ "--apply-android-filters" ]
+ }
+ if (defined(invoker.apply_device_filters) && invoker.apply_device_filters) {
+ args += [ "--apply-device-filters" ]
+ }
+ _assert_no_odd_data =
+ defined(invoker.assert_no_odd_data) && invoker.assert_no_odd_data
+ if (_assert_no_odd_data) {
+ args += [ "--assert-no-odd-data" ]
+ }
+ if (defined(invoker.command)) {
+ _isolate_dir = get_path_info(invoker.output, "dir")
+ args += [
+ "--command",
+ rebase_path(invoker.command, _isolate_dir),
+ ]
+ }
+ deps = [
+ ":${invoker.target_name}__write_deps",
+ ]
+ }
+}
+
# Define a test as an executable (or apk on Android) with the "testonly" flag
# set.
# Variable:
@@ -30,6 +80,36 @@ template("test") {
"isolate_file",
"shard_timeout",
]
+ _gen_isolate_vars = [
+ "allow_odd_runtime_deps",
+ "ignore_all_data_deps",
+ ]
+
+ # TODO(agrieve): Delete all manually passed-in .isolate files now that they
+ # are unused. http://crbug.com/589318
+ assert(!defined(invoker.isolate_file) || invoker.isolate_file != "") # Mark used.
+ _generate_device_isolate =
+ !defined(invoker.ignore_all_data_deps) || !invoker.ignore_all_data_deps
+
+ if (_generate_device_isolate) {
+ _allow_odd_runtime_deps = defined(invoker.allow_odd_runtime_deps) &&
+ invoker.allow_odd_runtime_deps
+ _device_isolate_path = "$target_gen_dir/$target_name.device.isolate"
+ _gen_isolate_target_name = "${target_name}__isolate"
+ _gen_isolate(_gen_isolate_target_name) {
+ data_deps = []
+ forward_variables_from(invoker,
+ [
+ "data",
+ "data_deps",
+ "deps",
+ "public_deps",
+ ])
+ assert_no_odd_data = !_allow_odd_runtime_deps
+ output = _device_isolate_path
+ apply_device_filters = true
+ }
+ }
if (_use_raw_android_executable) {
_exec_target = "${target_name}__exec"
@@ -41,7 +121,10 @@ template("test") {
# Configs will always be defined since we set_defaults in BUILDCONFIG.gn.
configs = []
data_deps = []
- forward_variables_from(invoker, "*", [ "extra_dist_files" ])
+ forward_variables_from(
+ invoker,
+ "*",
+ _wrapper_script_vars + _gen_isolate_vars + [ "extra_dist_files" ])
testonly = true
# Thanks to the set_defaults() for test(), configs are initialized with
@@ -86,10 +169,10 @@ template("test") {
testonly = true
deps = []
- forward_variables_from(
- invoker,
- "*",
- _apk_specific_vars + _wrapper_script_vars + [ "visibility" ])
+ forward_variables_from(invoker,
+ "*",
+ _apk_specific_vars + _wrapper_script_vars +
+ _gen_isolate_vars + [ "visibility" ])
if (!defined(invoker.use_default_launcher) ||
invoker.use_default_launcher) {
@@ -123,6 +206,12 @@ template("test") {
"${_output_name}_incremental__test_runner_script"
test_runner_script(_incremental_test_runner_target) {
forward_variables_from(invoker, _wrapper_script_vars)
+ if (_generate_device_isolate) {
+ isolate_file = _device_isolate_path
+ deps = [
+ ":$_gen_isolate_target_name",
+ ]
+ }
apk_target = ":$_apk_target"
test_name = "${_output_name}_incremental"
test_type = "gtest"
@@ -143,6 +232,13 @@ template("test") {
_test_runner_target = "${_output_name}__test_runner_script"
test_runner_script(_test_runner_target) {
forward_variables_from(invoker, _wrapper_script_vars)
+ if (_generate_device_isolate) {
+ isolate_file = _device_isolate_path
+ deps = [
+ ":$_gen_isolate_target_name",
+ ]
+ }
+
if (_use_raw_android_executable) {
executable_dist_dir = "$root_out_dir/$_dist_target"
} else {
« no previous file with comments | « testing/generate_isolate.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698