Chromium Code Reviews| Index: testing/test.gni |
| diff --git a/testing/test.gni b/testing/test.gni |
| index 4503860eedcb07b4c186e92ae239045e33ab41bb..d13c561c7d12d4bbd20d25b281f678bae5cd134c 100644 |
| --- a/testing/test.gni |
| +++ b/testing/test.gni |
| @@ -6,9 +6,34 @@ |
| # TEST SETUP |
| # ============================================================================== |
| +if (is_android) { |
| + template("_gen_apk_isolate") { |
| + action(target_name) { |
| + script = "//build/android/gyp/gen-android-test-isolate.py" |
| + outputs = [ |
| + invoker.output, |
| + ] |
| + args = [ |
| + "--out-file", |
| + rebase_path(invoker.output, root_build_dir), |
| + ".", |
| + invoker.lib_target, |
| + ] |
| + } |
| + } |
| +} |
| + |
| # Define a test as an executable (or apk on Android) with the "testonly" flag |
| # set. |
| +# |
| +# Variables: |
| +# requires_apk_isolate: Whether the test has files (via data / data_deps) that |
| +# need to be side-loaded to the device. |
| template("test") { |
| + _requires_apk_isolate = |
|
jbudorick
2016/03/15 20:23:14
Why define this outside of is_android?
agrieve
2016/03/15 20:34:07
I thought it'd be nice to have it live right besid
|
| + defined(invoker.requires_apk_isolate) && invoker.requires_apk_isolate |
| + assert(_requires_apk_isolate || true) # Mark as used. |
| + |
| if (is_android) { |
| import("//build/config/android/config.gni") |
| import("//build/config/android/rules.gni") |
| @@ -17,6 +42,14 @@ template("test") { |
| library_name = "_${target_name}__library" |
| apk_name = "${target_name}_apk" |
| + if (_requires_apk_isolate) { |
| + _apk_isolate_target_name = "_${target_name}__apk_isolate" |
| + _apk_isolate_path = "$target_gen_dir/$target_name.apk.isolate" |
| + _gen_apk_isolate(_apk_isolate_target_name) { |
| + lib_target = get_label_info(":$library_name", "label_no_toolchain") |
| + output = _apk_isolate_path |
| + } |
| + } |
| shared_library(library_name) { |
| # 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 |
| @@ -89,7 +122,10 @@ template("test") { |
| test_name = _test_name |
| test_type = "gtest" |
| test_suite = _test_name |
| - if (defined(invoker.isolate_file)) { |
| + if (_requires_apk_isolate) { |
| + isolate_file = _apk_isolate_path |
| + # TODO(agrieve): Delete next conditional once it's not used. |
| + } else if (defined(invoker.isolate_file)) { |
| isolate_file = invoker.isolate_file |
| } |
| } |
| @@ -101,25 +137,34 @@ template("test") { |
| test_type = "gtest" |
| test_suite = _test_name |
| incremental_install = true |
| - if (defined(invoker.isolate_file)) { |
| + if (_requires_apk_isolate) { |
| + isolate_file = _apk_isolate_path |
| + # TODO(agrieve): Delete next conditional once it's not used. |
| + } else if (defined(invoker.isolate_file)) { |
| isolate_file = invoker.isolate_file |
| } |
| } |
| group(target_name) { |
| testonly = true |
| - datadeps = [ |
| + data_deps = [ |
| ":$test_runner_script_name", |
| ] |
| + if (_requires_apk_isolate) { |
| + data_deps += [ ":$_apk_isolate_target_name" ] |
| + } |
| deps = [ |
| ":$apk_name", |
| ] |
| } |
| group("${target_name}_incremental") { |
| testonly = true |
| - datadeps = [ |
| + data_deps = [ |
| ":$incremental_test_runner_script_name", |
| ] |
| + if (_requires_apk_isolate) { |
| + data_deps += [ ":$_apk_isolate_target_name" ] |
| + } |
| deps = [ |
| ":${apk_name}_incremental", |
| ] |