| Index: testing/test.gni
|
| diff --git a/testing/test.gni b/testing/test.gni
|
| index 8434fc5b3b48ca2fea3d282587f26e354e4c5d32..a575894ad4fb9f664100a0ee2c862499f6668ed3 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,40 @@ 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
|
| +
|
| + # The device isolate is needed at runtime, so it cannot go in
|
| + # target_gen_dir, as builder/tester configurations do not include it.
|
| + _target_dir_name = get_label_info(":$target_name", "dir")
|
| + _device_isolate_path = "$root_out_dir/gen.runtime/$_target_dir_name/$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 +125,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 +173,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 +210,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 +236,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 {
|
|
|