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) {
}
}
# 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:
# apk_under_test: The apk being tested (optional).
# Arguments:
# 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
# instrumentation_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"
# ]
# instrumentation_test_runner("foo_test_for_bar") {
# android_test_apk: ":foo"
# android_test_apk_name: "Foo"
# apk_under_test: ":bar"
# }
template("instrumentation_test_apk") {
assert(defined(invoker.apk_name))
template("instrumentation_test_runner") {
testonly = true
assert(defined(invoker.android_test_apk))
assert(defined(invoker.android_test_apk_name))
_incremental_allowed =
!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"
_dist_ijar_path =
"$root_build_dir/test.lib.java/" + invoker.apk_name + ".jar"
_dist_ijar_path = "$root_build_dir/test.lib.java/" +
invoker.android_test_apk_name + ".jar"
if (_incremental_allowed) {
_incremental_test_runner_target_name =
"${_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) {
_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 ||
......@@ -3598,6 +3605,9 @@ if (enable_java_templates) {
}
}
if (_incremental_allowed) {
if (defined(invoker.proguard_enabled)) {
not_needed(invoker, [ "proguard_enabled" ])
}
test_runner_script(_incremental_test_runner_target_name) {
forward_variables_from(invoker,
[
......@@ -3616,7 +3626,68 @@ if (enable_java_templates) {
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) {
deps = []
data_deps = []
......@@ -3632,8 +3703,9 @@ if (enable_java_templates) {
} else {
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)) {
# Prevent a build_hooks_android_impl exising in both the test apks as
......@@ -3674,10 +3746,6 @@ if (enable_java_templates) {
} 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 ]
......@@ -3703,8 +3771,6 @@ if (enable_java_templates) {
if (_incremental_allowed) {
group("${target_name}_incremental") {
public_deps = [
":$_incremental_test_runner_target_name",
":${_apk_target_name}_dist_ijar",
":${_apk_target_name}_incremental",
]
if (defined(invoker.apk_under_test)) {
......@@ -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
#
# This target creates an Android apk for running gtest-based unittests.
......
......@@ -2077,9 +2077,8 @@ if (enable_arcore) {
# Chrome smoke test is a minimal test to ensure Chrome is not DOA. It is
# 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_under_test = "//chrome/android:chrome_public_apk"
android_manifest =
"javatests/src/org/chromium/chrome/test/smoke/AndroidManifest.xml"
target_sdk_version = 28
......@@ -2090,13 +2089,16 @@ instrumentation_test_apk("chrome_smoke_test") {
"//base:base_java_test_support",
"//chrome/test/android:chrome_java_test_pagecontroller",
"//content/public/test/android:content_java_test_support",
"//third_party/android_support_test_runner:runner_java",
"//third_party/junit",
"//third_party/ub-uiautomator:ub_uiautomator_java",
]
}
if (!is_java_debug) {
proguard_enabled = true
proguard_configs = [ "//chrome/android/java/apk_for_test.flags" ]
}
instrumentation_test_runner("chrome_public_smoke_test") {
apk_under_test = "//chrome/android:chrome_public_apk"
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
......
......@@ -19,6 +19,6 @@
</application>
<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"/>
</manifest>
......@@ -38,17 +38,16 @@ public class ChromeSmokeTest {
@Before
public void setUp() {
// TODO (aluo): Adjust this as needed according to cl 1585142
mPackageName = InstrumentationRegistry.getArguments().getString(PACKAGE_NAME_ARG);
if (mPackageName == null) {
mPackageName = InstrumentationRegistry.getTargetContext().getPackageName();
}
// TODO (aluo): Adjust this as needed according to https://crrev.com/c/1585142
mPackageName = InstrumentationRegistry.getArguments().getString(
PACKAGE_NAME_ARG, "org.chromium.chrome");
}
@Test
public void testHello() {
Context context = InstrumentationRegistry.getContext();
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));
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