Commit 88952e43 authored by Andrew Luo's avatar Andrew Luo Committed by Commit Bot

Make chrome smoke test self-testing and fix launch intent flags.

Bug: 970083
Change-Id: I8ac599755f0900c5aae862e554dcafc91d7c7fa0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1682988
Commit-Queue: Andrew Luo <aluo@chromium.org>
Reviewed-by: default avatarJohn Budorick <jbudorick@chromium.org>
Reviewed-by: default avatarAndrew Grieve <agrieve@chromium.org>
Cr-Commit-Position: refs/heads/master@{#686833}
parent 9f7c8a88
...@@ -3537,44 +3537,51 @@ if (enable_java_templates) { ...@@ -3537,44 +3537,51 @@ if (enable_java_templates) {
} }
} }
# Declare an Android instrumentation test apk # Declare an Android instrumentation test runner.
# #
# This target creates an Android instrumentation test apk. # This target creates a wrapper script to run Android instrumentation tests.
# #
# Supports all variables of android_apk(), plus: # Arguments:
# apk_under_test: The apk being tested (optional). # android_test_apk: The target containing the tests.
# android_test_apk_name: The apk_name in android_test_apk
#
# The following args are optional:
# apk_under_test: The target being tested.
# additional_apks: Additional targets to install on device.
# data: List of runtime data file dependencies.
# data_deps: List of non-linked dependencies.
# deps: List of private dependencies.
# ignore_all_data_deps: Don't build data_deps and additional_apks.
# never_incremental: Disable incremental builds.
# proguard_enabled: Enable proguard
# public_deps: List of public dependencies
# #
# Example # Example
# instrumentation_test_apk("foo_test_apk") { # instrumentation_test_runner("foo_test_for_bar") {
# android_manifest = "AndroidManifest.xml" # android_test_apk: ":foo"
# apk_name = "FooTest" # android_test_apk_name: "Foo"
# apk_under_test = "Foo" # apk_under_test: ":bar"
# java_files = [
# "android/org/chromium/foo/FooTestCase.java",
# "android/org/chromium/foo/FooExampleTest.java",
# ]
# deps = [
# ":foo_test_support_java"
# ]
# } # }
template("instrumentation_test_apk") { template("instrumentation_test_runner") {
assert(defined(invoker.apk_name))
testonly = true testonly = true
assert(defined(invoker.android_test_apk))
assert(defined(invoker.android_test_apk_name))
_incremental_allowed = _incremental_allowed =
!defined(invoker.never_incremental) || !invoker.never_incremental !defined(invoker.never_incremental) || !invoker.never_incremental
_apk_target_name = "${target_name}__apk" _apk_target_name =
get_label_info(invoker.android_test_apk, "name") + "__apk"
_test_runner_target_name = "${target_name}__test_runner_script" _test_runner_target_name = "${target_name}__test_runner_script"
_dist_ijar_path = _dist_ijar_path = "$root_build_dir/test.lib.java/" +
"$root_build_dir/test.lib.java/" + invoker.apk_name + ".jar" invoker.android_test_apk_name + ".jar"
if (_incremental_allowed) { if (_incremental_allowed) {
_incremental_test_runner_target_name = _incremental_test_runner_target_name =
"${_test_runner_target_name}_incremental" "${_test_runner_target_name}_incremental"
_incremental_test_name = "${invoker.target_name}_incremental" _incremental_test_name = "${target_name}_incremental"
} }
if (incremental_apk_by_default && _incremental_allowed) { if (incremental_apk_by_default && _incremental_allowed) {
_incremental_test_runner_target_name = _test_runner_target_name _incremental_test_runner_target_name = _test_runner_target_name
_incremental_test_name = invoker.target_name _incremental_test_name = "${target_name}"
} }
if (!incremental_apk_by_default || if (!incremental_apk_by_default ||
...@@ -3598,6 +3605,9 @@ if (enable_java_templates) { ...@@ -3598,6 +3605,9 @@ if (enable_java_templates) {
} }
} }
if (_incremental_allowed) { if (_incremental_allowed) {
if (defined(invoker.proguard_enabled)) {
not_needed(invoker, [ "proguard_enabled" ])
}
test_runner_script(_incremental_test_runner_target_name) { test_runner_script(_incremental_test_runner_target_name) {
forward_variables_from(invoker, forward_variables_from(invoker,
[ [
...@@ -3616,7 +3626,68 @@ if (enable_java_templates) { ...@@ -3616,7 +3626,68 @@ if (enable_java_templates) {
incremental_install = true incremental_install = true
} }
} }
group(target_name) {
if (incremental_apk_by_default && _incremental_allowed) {
public_deps = [
":${target_name}_incremental",
]
} else {
public_deps = [
":$_apk_target_name",
":$_test_runner_target_name",
# Required by test runner to enumerate test list.
":${_apk_target_name}_dist_ijar",
]
if (defined(invoker.apk_under_test)) {
public_deps += [ invoker.apk_under_test ]
}
}
}
if (_incremental_allowed) {
group("${target_name}_incremental") {
public_deps = [
":$_incremental_test_runner_target_name",
":${_apk_target_name}_incremental",
# Required by test runner to enumerate test list.
":${_apk_target_name}_dist_ijar",
]
if (defined(invoker.apk_under_test)) {
public_deps += [ "${invoker.apk_under_test}_incremental" ]
}
}
}
}
# Declare an Android instrumentation test apk
#
# This target creates an Android instrumentation test apk.
#
# Supports all variables of android_apk(), plus:
# apk_under_test: The apk being tested (optional).
#
# Example
# android_test_apk("foo_test_apk") {
# android_manifest = "AndroidManifest.xml"
# apk_name = "FooTest"
# apk_under_test = "Foo"
# java_files = [
# "android/org/chromium/foo/FooTestCase.java",
# "android/org/chromium/foo/FooExampleTest.java",
# ]
# deps = [
# ":foo_test_support_java"
# ]
# }
template("android_test_apk") {
assert(defined(invoker.apk_name))
testonly = true
_incremental_allowed =
!defined(invoker.never_incremental) || !invoker.never_incremental
_apk_target_name = "${target_name}__apk"
_dist_ijar_path =
"$root_build_dir/test.lib.java/" + invoker.apk_name + ".jar"
android_apk(_apk_target_name) { android_apk(_apk_target_name) {
deps = [] deps = []
data_deps = [] data_deps = []
...@@ -3632,8 +3703,9 @@ if (enable_java_templates) { ...@@ -3632,8 +3703,9 @@ if (enable_java_templates) {
} else { } else {
enable_native_mocks = true enable_native_mocks = true
} }
if (defined(invoker.additional_apks)) {
data_deps += invoker.additional_apks if (defined(additional_apks)) {
data_deps += additional_apks
} }
if (defined(invoker.apk_under_test)) { if (defined(invoker.apk_under_test)) {
# Prevent a build_hooks_android_impl exising in both the test apks as # Prevent a build_hooks_android_impl exising in both the test apks as
...@@ -3674,10 +3746,6 @@ if (enable_java_templates) { ...@@ -3674,10 +3746,6 @@ if (enable_java_templates) {
} else { } else {
public_deps = [ public_deps = [
":$_apk_target_name", ":$_apk_target_name",
":$_test_runner_target_name",
# Required by test runner to enumerate test list.
":${_apk_target_name}_dist_ijar",
] ]
if (defined(invoker.apk_under_test)) { if (defined(invoker.apk_under_test)) {
public_deps += [ invoker.apk_under_test ] public_deps += [ invoker.apk_under_test ]
...@@ -3703,8 +3771,6 @@ if (enable_java_templates) { ...@@ -3703,8 +3771,6 @@ if (enable_java_templates) {
if (_incremental_allowed) { if (_incremental_allowed) {
group("${target_name}_incremental") { group("${target_name}_incremental") {
public_deps = [ public_deps = [
":$_incremental_test_runner_target_name",
":${_apk_target_name}_dist_ijar",
":${_apk_target_name}_incremental", ":${_apk_target_name}_incremental",
] ]
if (defined(invoker.apk_under_test)) { if (defined(invoker.apk_under_test)) {
...@@ -3714,6 +3780,35 @@ if (enable_java_templates) { ...@@ -3714,6 +3780,35 @@ if (enable_java_templates) {
} }
} }
# Declare an Android instrumentation test apk with wrapper script.
#
# This target creates an Android instrumentation test apk with wrapper script to run the test.
#
# Supports all variables of android_test_apk.
template("instrumentation_test_apk") {
assert(defined(invoker.apk_name))
_apk_target_name = "${target_name}__test_apk"
android_test_apk(_apk_target_name) {
forward_variables_from(invoker, "*")
}
instrumentation_test_runner(target_name) {
forward_variables_from(invoker,
[
"additional_apks",
"apk_under_test",
"data",
"data_deps",
"deps",
"ignore_all_data_deps",
"never_incremental",
"proguard_enabled",
"public_deps",
])
android_test_apk = ":${_apk_target_name}"
android_test_apk_name = invoker.apk_name
}
}
# Declare an Android gtest apk # Declare an Android gtest apk
# #
# This target creates an Android apk for running gtest-based unittests. # This target creates an Android apk for running gtest-based unittests.
......
...@@ -2077,9 +2077,8 @@ if (enable_arcore) { ...@@ -2077,9 +2077,8 @@ if (enable_arcore) {
# Chrome smoke test is a minimal test to ensure Chrome is not DOA. It is # Chrome smoke test is a minimal test to ensure Chrome is not DOA. It is
# designed to be runnable against uninstrumented Chrome apks. # designed to be runnable against uninstrumented Chrome apks.
instrumentation_test_apk("chrome_smoke_test") { android_test_apk("chrome_smoke_test_apk") {
apk_name = "ChromeSmokeTest" apk_name = "ChromeSmokeTest"
apk_under_test = "//chrome/android:chrome_public_apk"
android_manifest = android_manifest =
"javatests/src/org/chromium/chrome/test/smoke/AndroidManifest.xml" "javatests/src/org/chromium/chrome/test/smoke/AndroidManifest.xml"
target_sdk_version = 28 target_sdk_version = 28
...@@ -2090,13 +2089,16 @@ instrumentation_test_apk("chrome_smoke_test") { ...@@ -2090,13 +2089,16 @@ instrumentation_test_apk("chrome_smoke_test") {
"//base:base_java_test_support", "//base:base_java_test_support",
"//chrome/test/android:chrome_java_test_pagecontroller", "//chrome/test/android:chrome_java_test_pagecontroller",
"//content/public/test/android:content_java_test_support", "//content/public/test/android:content_java_test_support",
"//third_party/android_support_test_runner:runner_java",
"//third_party/junit", "//third_party/junit",
"//third_party/ub-uiautomator:ub_uiautomator_java",
] ]
}
if (!is_java_debug) { instrumentation_test_runner("chrome_public_smoke_test") {
proguard_enabled = true apk_under_test = "//chrome/android:chrome_public_apk"
proguard_configs = [ "//chrome/android/java/apk_for_test.flags" ] android_test_apk = ":chrome_smoke_test_apk"
} android_test_apk_name = "ChromeSmokeTest"
} }
# TODO(crbug.com/989654): Add Chrome bundle as test target once the test runner # TODO(crbug.com/989654): Add Chrome bundle as test target once the test runner
......
...@@ -19,6 +19,6 @@ ...@@ -19,6 +19,6 @@
</application> </application>
<instrumentation android:name="org.chromium.base.test.BaseChromiumAndroidJUnitRunner" <instrumentation android:name="org.chromium.base.test.BaseChromiumAndroidJUnitRunner"
android:targetPackage="org.chromium.chrome" android:targetPackage="org.chromium.chrome.test.smoke"
android:label="Runner for org.chromium.chrome.test.smoke"/> android:label="Runner for org.chromium.chrome.test.smoke"/>
</manifest> </manifest>
...@@ -38,17 +38,16 @@ public class ChromeSmokeTest { ...@@ -38,17 +38,16 @@ public class ChromeSmokeTest {
@Before @Before
public void setUp() { public void setUp() {
// TODO (aluo): Adjust this as needed according to cl 1585142 // TODO (aluo): Adjust this as needed according to https://crrev.com/c/1585142
mPackageName = InstrumentationRegistry.getArguments().getString(PACKAGE_NAME_ARG); mPackageName = InstrumentationRegistry.getArguments().getString(
if (mPackageName == null) { PACKAGE_NAME_ARG, "org.chromium.chrome");
mPackageName = InstrumentationRegistry.getTargetContext().getPackageName();
}
} }
@Test @Test
public void testHello() { public void testHello() {
Context context = InstrumentationRegistry.getContext(); Context context = InstrumentationRegistry.getContext();
final Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(DATA_URL)); final Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(DATA_URL));
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setComponent(new ComponentName(mPackageName, ACTIVITY_NAME)); intent.setComponent(new ComponentName(mPackageName, ACTIVITY_NAME));
context.startActivity(intent); context.startActivity(intent);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment