diff --git a/build_extensions/axt_versions.bzl b/build_extensions/axt_versions.bzl index 864b048a21..028414c3a0 100644 --- a/build_extensions/axt_versions.bzl +++ b/build_extensions/axt_versions.bzl @@ -4,18 +4,18 @@ Ensure UsageTrackerRegistry is updated accordingly when incrementing version num """ # AXT versions -RUNNER_VERSION = "1.4.1-alpha02" # stable 1.4.0 -RULES_VERSION = "1.4.1-alpha02" # stable 1.4.0 -MONITOR_VERSION = "1.5.0-alpha02" # stable 1.4.0 -ESPRESSO_VERSION = "3.5.0-alpha02" # stable 3.4.0 -CORE_VERSION = "1.4.1-alpha02" # stable 1.4.0 -ANDROIDX_JUNIT_VERSION = "1.1.4-alpha02" # stable 1.1.3 -ANDROIDX_TRUTH_VERSION = "1.5.0-alpha02" # stable 1.4.0 +RUNNER_VERSION = "1.4.1-alpha03" # stable 1.4.0 +RULES_VERSION = "1.4.1-alpha03" # stable 1.4.0 +MONITOR_VERSION = "1.5.0-alpha03" # stable 1.4.0 +ESPRESSO_VERSION = "3.5.0-alpha03" # stable 3.4.0 +CORE_VERSION = "1.4.1-alpha03" # stable 1.4.0 +ANDROIDX_JUNIT_VERSION = "1.1.4-alpha03" # stable 1.1.3 +ANDROIDX_TRUTH_VERSION = "1.5.0-alpha03" # stable 1.4.0 UIAUTOMATOR_VERSION = "2.2.0" JANK_VERSION = "1.0.1" -SERVICES_VERSION = "1.4.1-alpha02" # stable 1.4.0 -ORCHESTRATOR_VERSION = "1.4.1-alpha02" # stable 1.4.0 -ANNOTATION_VERSION = "1.0.0-alpha01" +SERVICES_VERSION = "1.4.1-alpha03" # stable 1.4.0 +ORCHESTRATOR_VERSION = "1.4.1-alpha03" # stable 1.4.0 +ANNOTATION_VERSION = "1.0.0-alpha02" # Maven dependency versions ANDROIDX_ANNOTATION_VERSION = "1.2.0" diff --git a/build_extensions/release.bzl b/build_extensions/release.bzl index 622d75132c..9fefe62fec 100644 --- a/build_extensions/release.bzl +++ b/build_extensions/release.bzl @@ -10,7 +10,7 @@ def axt_release_lib( proguard_specs = None, proguard_library = None, multidex = "off", - jarjar_rules = "//build_extensions:noJarJarRules.txt", + jarjar_rules = ["//build_extensions:noJarJarRules.txt"], keep_spec = None, remove_spec = None, overlapping_jars = [], @@ -81,25 +81,32 @@ def axt_release_lib( if proguard_specs: expected_output = ":%s_all_proguard.jar" % name - # Step 3. Rename classes via jarjar + # Step 3. Rename classes via series of jarjar transforms + native.java_binary( name = "jarjar_bin", main_class = "org.pantsbuild.jarjar.Main", runtime_deps = ["@maven//:org_pantsbuild_jarjar"], visibility = visibility, ) - native.genrule( - name = "%s_jarjared" % name, - srcs = [expected_output], - outs = ["%s_jarjared.jar" % name], - cmd = ("$(location :jarjar_bin) process " + - "$(location %s) '$<' '$@'") % jarjar_rules, - tools = [ - jarjar_rules, - ":jarjar_bin", - ], - visibility = visibility, - ) + i = 0 + for jarjar_rule in jarjar_rules: + input = expected_output + jarjar_rule_name = "%s_jarjared_%d" % (name, i) + expected_output = "%s.jar" % jarjar_rule_name + native.genrule( + name = jarjar_rule_name, + srcs = [input], + outs = [expected_output], + cmd = ("$(location :jarjar_bin) process " + + "$(location %s) '$<' '$@'") % jarjar_rule, + tools = [ + jarjar_rule, + "//third_party/java/jarjar:jarjar_bin", + ], + visibility = visibility, + ) + i = i + 1 # Step 4. Strip out external dependencies. This produces the final name_no_deps.jar. remove_from_jar( diff --git a/core/java/androidx/test/core/BUILD.bazel b/core/java/androidx/test/core/BUILD.bazel index e7451866cd..bf70286831 100644 --- a/core/java/androidx/test/core/BUILD.bazel +++ b/core/java/androidx/test/core/BUILD.bazel @@ -31,6 +31,10 @@ kt_android_library( ], ), exports_manifest = 1, + kotlincopts = [ + "-module-name", + "androidx.test.core", + ], manifest = "AndroidManifest.xml", resource_files = glob(["res/**"]), tags = ["alt_dep=//core"], @@ -78,7 +82,7 @@ axt_release_lib( name = "core_release", # keep all androidx.test.core classes except androidx.test.core.R, since that will be # auto-generated by consuming build system - keep_spec = "androidx/test/core/.*", + keep_spec = "androidx/test/core/.*|META-INF/androidx.test.core.kotlin_module", remove_spec = "androidx/test/core/R[$$\\.]", resource_files = glob(["res/**"]), deps = [ diff --git a/espresso/core/java/androidx/test/espresso/BUILD.bazel b/espresso/core/java/androidx/test/espresso/BUILD.bazel index a52156eb12..62576f8439 100644 --- a/espresso/core/java/androidx/test/espresso/BUILD.bazel +++ b/espresso/core/java/androidx/test/espresso/BUILD.bazel @@ -196,8 +196,17 @@ android_library( axt_release_lib( name = "espresso_core_release", custom_package = "androidx.test.espresso.core", - jarjar_rules = "release_jarjar_rules.txt", - keep_spec = "androidx/test/espresso", + # perform a two stage jarjar process + # the first stage renames all references to guava,dagger to espresso.internal namespace so + # external users aren't exposed to dependency version conflicts with those libraries + # the second stage renames guava's ListenableFuture back to its original namespace, + # since com.google.guava:listenablefuture is a proper transitive dependency + jarjar_rules = [ + "release_jarjar_rules.txt", + "release_jarjar_rules_stage2.txt", + ], + # ensure to include kotlin_module since those define extension functions + keep_spec = "androidx/test/espresso|META-INF/androidx.test.espresso.*.kotlin_module", overlapping_jars = [ "//espresso/idling_resource/java/androidx/test/espresso:espresso_idling_resource_release_no_deps.jar", ], diff --git a/espresso/core/java/androidx/test/espresso/release_jarjar_rules_stage2.txt b/espresso/core/java/androidx/test/espresso/release_jarjar_rules_stage2.txt new file mode 100644 index 0000000000..ee26a50b08 --- /dev/null +++ b/espresso/core/java/androidx/test/espresso/release_jarjar_rules_stage2.txt @@ -0,0 +1 @@ +rule androidx.test.espresso.core.internal.deps.guava.util.concurrent.ListenableFuture com.google.common.util.concurrent.ListenableFuture diff --git a/espresso/core/java/androidx/test/espresso/remote/BUILD.bazel b/espresso/core/java/androidx/test/espresso/remote/BUILD.bazel index 50edb158e0..14740ef6b1 100644 --- a/espresso/core/java/androidx/test/espresso/remote/BUILD.bazel +++ b/espresso/core/java/androidx/test/espresso/remote/BUILD.bazel @@ -210,7 +210,7 @@ combine_jars( axt_release_lib( name = "espresso_remote_release", - jarjar_rules = "release_jarjar_rules.txt", + jarjar_rules = ["release_jarjar_rules.txt"], keep_spec = "androidx/test/espresso", overlapping_jars = [ "//espresso/core/java/androidx/test/espresso:espresso_core_release_no_deps.jar", diff --git a/espresso/core/java/androidx/test/espresso/screenshot/BUILD.bazel b/espresso/core/java/androidx/test/espresso/screenshot/BUILD.bazel index 952c9cfbab..3caf7c32be 100644 --- a/espresso/core/java/androidx/test/espresso/screenshot/BUILD.bazel +++ b/espresso/core/java/androidx/test/espresso/screenshot/BUILD.bazel @@ -6,6 +6,11 @@ package(default_visibility = ["//visibility:public"]) kt_android_library( name = "screenshot", srcs = glob(["*.kt"]), + # generate the kotlin_module file that defines extensions in the right place + kotlincopts = [ + "-module-name", + "androidx.test.espresso.screenshot", + ], deps = [ "//:androidx_annotation", "//annotation", diff --git a/espresso/core/javatests/androidx/test/espresso/screenshot/ViewInteractionCaptureJavaTest.java b/espresso/core/javatests/androidx/test/espresso/screenshot/ViewInteractionCaptureJavaTest.java new file mode 100644 index 0000000000..be511b8ff8 --- /dev/null +++ b/espresso/core/javatests/androidx/test/espresso/screenshot/ViewInteractionCaptureJavaTest.java @@ -0,0 +1,33 @@ +package androidx.test.espresso.screenshot; + +import static androidx.test.espresso.Espresso.onView; +import static androidx.test.espresso.matcher.ViewMatchers.withId; +import static com.google.common.truth.Truth.assertThat; + +import android.graphics.Bitmap; +import androidx.test.core.graphics.BitmapStorage; +import androidx.test.ext.junit.rules.ActivityScenarioRule; +import androidx.test.ext.junit.runners.AndroidJUnit4; +import androidx.test.ui.app.MainActivity; +import java.io.IOException; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; + +/** A simple scuba test to ensure captureToImage works from hjava */ +@RunWith(AndroidJUnit4.class) +public class ViewInteractionCaptureJavaTest { + + @Rule + public ActivityScenarioRule activityScenarioRule = + new ActivityScenarioRule<>(MainActivity.class); + + @Test + public void viewInteractionCapture() throws IOException { + Bitmap bitmap = ViewInteractionCapture.captureToBitmap(onView(withId(R.id.layout))); + + assertThat(bitmap).isNotNull(); + + BitmapStorage.writeToTestStorage(bitmap, "viewInteractionCapture"); + } +} diff --git a/espresso/web/java/androidx/test/espresso/web/BUILD.bazel b/espresso/web/java/androidx/test/espresso/web/BUILD.bazel index 388d641826..f3d912a53a 100644 --- a/espresso/web/java/androidx/test/espresso/web/BUILD.bazel +++ b/espresso/web/java/androidx/test/espresso/web/BUILD.bazel @@ -25,7 +25,7 @@ android_library( axt_release_lib( name = "espresso_web_release", - jarjar_rules = "release_jarjar_rules.txt", + jarjar_rules = ["release_jarjar_rules.txt"], keep_spec = "androidx.test.espresso.web", proguard_specs = [ "//:proguard_binary.cfg", diff --git a/ktx/core/java/androidx/test/core/BUILD.bazel b/ktx/core/java/androidx/test/core/BUILD.bazel index f55707553c..3d28c062de 100644 --- a/ktx/core/java/androidx/test/core/BUILD.bazel +++ b/ktx/core/java/androidx/test/core/BUILD.bazel @@ -19,6 +19,10 @@ kt_android_library( srcs = glob( ["**/*.kt"], ), + kotlincopts = [ + "-module-name", + "androidx.test.core.ktx", + ], deps = [ "//:androidx_lifecycle_common", "//core", diff --git a/runner/android_junit_runner/java/androidx/test/BUILD.bazel b/runner/android_junit_runner/java/androidx/test/BUILD.bazel index 18e76ec9e1..64138ca122 100644 --- a/runner/android_junit_runner/java/androidx/test/BUILD.bazel +++ b/runner/android_junit_runner/java/androidx/test/BUILD.bazel @@ -50,7 +50,7 @@ android_library( axt_release_lib( name = "runner_release", custom_package = "androidx.test.runner", - jarjar_rules = "release_jarjar_rules.txt", + jarjar_rules = ["release_jarjar_rules.txt"], keep_spec = "androidx/test", overlapping_jars = [ "//annotation/java/androidx/test/annotation:annotation_release_no_deps.jar", diff --git a/runner/monitor/java/androidx/test/BUILD.bazel b/runner/monitor/java/androidx/test/BUILD.bazel index 16c86fa6b9..23b8520509 100644 --- a/runner/monitor/java/androidx/test/BUILD.bazel +++ b/runner/monitor/java/androidx/test/BUILD.bazel @@ -55,7 +55,7 @@ android_library( axt_release_lib( name = "monitor_release", custom_package = "androidx.test.monitor", - jarjar_rules = "release_jarjar_rules.txt", + jarjar_rules = ["release_jarjar_rules.txt"], keep_spec = "androidx/test", overlapping_jars = [ "//annotation/java/androidx/test/annotation:annotation_release_no_deps.jar",