Skip to content

Commit

Permalink
Adding a LocalSocketProtocol for the ShellExecutor to talk to the She…
Browse files Browse the repository at this point in the history
…llMain.

PiperOrigin-RevId: 681170535
  • Loading branch information
copybara-androidxtest committed Oct 3, 2024
1 parent 21a81c6 commit 66bd7aa
Show file tree
Hide file tree
Showing 23 changed files with 399 additions and 55 deletions.
2 changes: 1 addition & 1 deletion .bazelversion
Original file line number Diff line number Diff line change
@@ -1 +1 @@
6.3.0
7.3.2
174 changes: 174 additions & 0 deletions MODULE.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,174 @@
module(name = "android_test_support")

bazel_dep(name = "rules_android", version = "0.5.1")
bazel_dep(name = "rules_java", version = "7.12.1")
bazel_dep(name = "rules_jvm_external", version = "6.4")
bazel_dep(name = "rules_license", version = "1.0.0")
bazel_dep(name = "rules_kotlin", version = "2.0.0")
bazel_dep(name = "rules_proto", version = "6.0.2")
bazel_dep(name = "rules_robolectric", version = "4.13")
bazel_dep(name = "grpc-java", version = "1.66.0")
bazel_dep(name = "abseil-py", version = "2.1.0")

# These need to be consistent with their counterparts in build_extensions/axt_deps_versions.bzl.
KOTLIN_VERSION = "1.8.20"
KOTLINX_COROUTINES_VERSION = "1.7.1"
GRPC_VERSION = "1.66.0"

maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven")

load(
"//build_extensions:axt_deps_versions.bzl",
"ANDROIDX_ANNOTATION_EXPERIMENTAL_VERSION",
"ANDROIDX_ANNOTATION_VERSION",
"ANDROIDX_COMPAT_VERSION",
"ANDROIDX_CONCURRENT_VERSION",
"ANDROIDX_CORE_VERSION",
"ANDROIDX_CURSOR_ADAPTER_VERSION",
"ANDROIDX_DRAWER_LAYOUT_VERSION",
"ANDROIDX_FRAGMENT_VERSION",
"ANDROIDX_LEGACY_SUPPORT_VERSION",
"ANDROIDX_LIFECYCLE_VERSION",
"ANDROIDX_MULTIDEX_VERSION",
"ANDROIDX_RECYCLERVIEW_VERSION",
"ANDROIDX_TRACING_VERSION",
"ANDROIDX_VIEWPAGER_VERSION",
"ANDROIDX_WINDOW_VERSION",
"GOOGLE_MATERIAL_VERSION",
"GUAVA_LISTENABLEFUTURE_VERSION",
"GUAVA_VERSION",
"JUNIT_VERSION",
"UIAUTOMATOR_VERSION",
"ATF_VERSION"
)

maven.install(
name = "maven",
artifacts = [
"androidx.annotation:annotation:" + ANDROIDX_ANNOTATION_VERSION,
"androidx.annotation:annotation-experimental:jar:" + ANDROIDX_ANNOTATION_EXPERIMENTAL_VERSION,
"androidx.appcompat:appcompat:" + ANDROIDX_COMPAT_VERSION,
"androidx.concurrent:concurrent-futures:" + ANDROIDX_CONCURRENT_VERSION,
"androidx.concurrent:concurrent-futures-ktx:" + ANDROIDX_CONCURRENT_VERSION,
"androidx.core:core:" + ANDROIDX_CORE_VERSION,
"androidx.cursoradapter:cursoradapter:" + ANDROIDX_CURSOR_ADAPTER_VERSION,
"androidx.drawerlayout:drawerlayout:" + ANDROIDX_DRAWER_LAYOUT_VERSION,
"androidx.fragment:fragment:" + ANDROIDX_FRAGMENT_VERSION,
"androidx.legacy:legacy-support-core-ui:" + ANDROIDX_LEGACY_SUPPORT_VERSION,
"androidx.legacy:legacy-support-core-utils:" + ANDROIDX_LEGACY_SUPPORT_VERSION,
"androidx.legacy:legacy-support-v4:" + ANDROIDX_LEGACY_SUPPORT_VERSION,
"androidx.lifecycle:lifecycle-common:" + ANDROIDX_LIFECYCLE_VERSION,
"androidx.multidex:multidex:" + ANDROIDX_MULTIDEX_VERSION,
"androidx.recyclerview:recyclerview:" + ANDROIDX_RECYCLERVIEW_VERSION,
"androidx.tracing:tracing:" + ANDROIDX_TRACING_VERSION,
"androidx.test.uiautomator:uiautomator:" + UIAUTOMATOR_VERSION,
"androidx.viewpager:viewpager:" + ANDROIDX_VIEWPAGER_VERSION,
"androidx.window:window:" + ANDROIDX_WINDOW_VERSION,
"androidx.window:window-java:" + ANDROIDX_WINDOW_VERSION,
"androidx.window:window-core:" + ANDROIDX_WINDOW_VERSION,
"aopalliance:aopalliance:1.0",
"com.android.tools.lint:lint-api:30.1.0",
"com.android.tools.lint:lint-checks:30.1.0",
"com.beust:jcommander:1.72",
maven.artifact(
artifact = "accessibility-test-framework",
exclusions = [
# exclude the org.checkerframework dependency since that require
# java8 compatibility. See b/176926990
maven.exclusion(
artifact = "checker",
group = "org.checkerframework",
),
# accessibility-test-framework depends on hamcrest 2.2 which causes 'Using type org.hamcrest.Matcher from an indirect dependency' compile errors
maven.exclusion(
artifact = "hamcrest-core",
group = "org.hamcrest",
),
maven.exclusion(
artifact = "hamcrest-library",
group = "org.hamcrest",
),
],
group = "com.google.android.apps.common.testing.accessibility.framework",
version = ATF_VERSION,
),
"com.google.android.material:material:" + GOOGLE_MATERIAL_VERSION,
"com.google.auto.value:auto-value:1.5.1",
"com.google.code.findbugs:jsr305:3.0.2",
"com.google.code.gson:gson:2.8.5",
"com.google.dagger:dagger-compiler:2.46",
"com.google.dagger:dagger-producers:2.46",
"com.google.dagger:dagger:2.46",
"com.google.errorprone:error_prone_annotations:2.9.0",
"com.google.errorprone:javac-shaded:9-dev-r4023-3",
"com.google.flogger:flogger-system-backend:0.4",
"com.google.flogger:flogger:0.4",
"com.google.flogger:google-extensions:0.4",
"com.google.googlejavaformat:google-java-format:1.4",
"com.google.guava:guava:" + GUAVA_VERSION,
"com.google.guava:listenablefuture:" + GUAVA_LISTENABLEFUTURE_VERSION,
"com.google.inject.extensions:guice-multibindings:4.1.0",
"com.google.inject:guice:4.1.0",
"com.google.truth:truth:1.0",
"com.googlecode.jarjar:jarjar:1.3",
"com.linkedin.dexmaker:dexmaker-mockito:jar:2.28.1",
"com.linkedin.dexmaker:dexmaker:2.28.1",
"org.mockito.kotlin:mockito-kotlin:4.1.0",
"com.squareup:javapoet:1.9.0",
"io.grpc:grpc-okhttp:1.54.1",
"io.grpc:grpc-stub:1.54.1",
"org.apache.tomcat:annotations-api:6.0.53",
"javax.annotation:javax.annotation-api:1.3.1",
"javax.inject:javax.inject:1",
"joda-time:joda-time:2.10.1",
"junit:junit:" + JUNIT_VERSION,
"net.bytebuddy:byte-buddy-agent:1.9.10",
"net.bytebuddy:byte-buddy:1.9.10",
"net.sf.kxml:kxml2:jar:2.3.0",
"org.ccil.cowan.tagsoup:tagsoup:1.2.1",
"org.checkerframework:checker-compat-qual:2.5.5",
"org.hamcrest:hamcrest-core:1.3",
"org.hamcrest:hamcrest-library:1.3",
"org.mockito:mockito-core:2.28.1",
"org.objenesis:objenesis:2.6",
"org.pantsbuild:jarjar:1.7.2",
"org.jetbrains.kotlin:kotlin-stdlib:%s" % KOTLIN_VERSION,
"org.jetbrains.kotlinx:kotlinx-coroutines-core:%s" % KOTLINX_COROUTINES_VERSION,
"org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:%s" % KOTLINX_COROUTINES_VERSION,
"org.jetbrains.kotlinx:kotlinx-coroutines-android:%s" % KOTLINX_COROUTINES_VERSION,
maven.artifact(
artifact = "robolectric",
exclusions = [
# exclude the com.google.guava dependency since that require
# java8 compatibility.
maven.exclusion(
artifact = "guava",
group = "com.google.guava",
),
],
group = "org.robolectric",
version = "4.13",
),
],
fetch_sources = True,
generate_compat_repositories = True,
repositories = [
"https://maven.google.com",
"https://repo1.maven.org/maven2",
"https://dl.bintray.com/linkedin/maven",
],
)

# need to have a isolated version tree for listenablefuture, because otherwise
# listenablefuture will get resolved to 9999.0-empty-to-avoid-conflict-with-guava
maven.install(
name = "maven_listenablefuture",
artifacts = [
"com.google.guava:listenablefuture:" + GUAVA_LISTENABLEFUTURE_VERSION,
],
repositories = [
"https://maven.google.com",
"https://repo1.maven.org/maven2",
"https://dl.bintray.com/linkedin/maven",
],
)
49 changes: 23 additions & 26 deletions WORKSPACE
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,18 @@ http_archive(
# rules_proto defines proto_library, as well as @com_google_protobuf_javalite
http_archive(
name = "rules_proto",
sha256 = "dc3fb206a2cb3441b485eb1e423165b231235a1ea9b031b4433cf7bc1fa460dd",
strip_prefix = "rules_proto-5.3.0-21.7",
urls = [
"https://github.com/bazelbuild/rules_proto/archive/refs/tags/5.3.0-21.7.tar.gz",
],
sha256 = "6fb6767d1bef535310547e03247f7518b03487740c11b6c6adb7952033fe1295",
strip_prefix = "rules_proto-6.0.2",
url = "https://github.com/bazelbuild/rules_proto/releases/download/6.0.2/rules_proto-6.0.2.tar.gz",
)
load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies", "rules_proto_toolchains")

load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies")
rules_proto_dependencies()

load("@rules_proto//proto:setup.bzl", "rules_proto_setup")
rules_proto_setup()

load("@rules_proto//proto:toolchains.bzl", "rules_proto_toolchains")
rules_proto_toolchains()

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
Expand Down Expand Up @@ -229,16 +233,13 @@ robolectric_repositories()

# Kotlin toolchains

rules_kotlin_version = "1.8-RC-12"
rules_kotlin_sha = "8e5c8ab087e0fa3fbb58e1f6b99d8fe40f75bac44994c3d208eba723284465d6"

http_archive(
name = "io_bazel_rules_kotlin",
sha256 = rules_kotlin_sha,
urls = ["https://github.com/bazelbuild/rules_kotlin/releases/download/v%s/rules_kotlin_release.tgz" % rules_kotlin_version],
name = "rules_kotlin",
sha256 = "d89723cc9ebbb7bdb2ebaca1af7d2383e074615643cf97a366b758a76b7dc443",
url = "https://github.com/bazelbuild/rules_kotlin/releases/download/v2.0.0/rules_kotlin-v2.0.0.tar.gz",
)

load("@io_bazel_rules_kotlin//kotlin:repositories.bzl", "kotlin_repositories", "kotlinc_version")
load("@rules_kotlin//kotlin:repositories.bzl", "kotlin_repositories", "kotlinc_version")

kotlin_repositories(
compiler_release = kotlinc_version(
Expand All @@ -247,30 +248,26 @@ kotlin_repositories(
),
)

load("@io_bazel_rules_kotlin//kotlin:core.bzl", "kt_register_toolchains")
load("@rules_kotlin//kotlin:core.bzl", "kt_register_toolchains")

kt_register_toolchains()

# Android bazel rules from Dec 22 2022. This is the last commit that supports bazel 6.0.0
RULES_ANDROID_COMMIT = "ce37817d8589cac4a7cc20cb4d51fe8ad459dea1"

RULES_ANDROID_SHA = "402b1ed3756028dca11835dad3225689a4040c3b377de798709f9a39b5c6af17"

http_archive(
name = "rules_android",
sha256 = RULES_ANDROID_SHA,
strip_prefix = "rules_android-%s" % RULES_ANDROID_COMMIT,
url = "https://github.com/bazelbuild/rules_android/archive/%s.zip" % RULES_ANDROID_COMMIT,
sha256 = "b1599e4604c1594a1b0754184c5e50f895a68f444d1a5a82b688b2370d990ba0",
strip_prefix = "rules_android-0.5.1",
url = "https://github.com/bazelbuild/rules_android/releases/download/v0.5.1/rules_android-v0.5.1.tar.gz",
)

load("@rules_android//:prereqs.bzl", "rules_android_prereqs")

rules_android_prereqs()

load("@rules_android//:defs.bzl", "rules_android_workspace")

rules_android_workspace()

load("@rules_android//rules:rules.bzl", "android_sdk_repository")
android_sdk_repository(
name = "androidsdk",
)

register_toolchains(
"@rules_android//toolchains/android:android_default_toolchain",
"@rules_android//toolchains/android_sdk:android_sdk_tools",
Expand Down
1 change: 1 addition & 0 deletions WORKSPACE.bzlmod
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
workspace(name = "android_test_support")
4 changes: 2 additions & 2 deletions build_extensions/axt_android_local_test.bzl
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
"""A rule wrapper for generating android_local_test ."""

load("@io_bazel_rules_kotlin//kotlin:android.bzl", "kt_android_library")
load("@rules_kotlin//kotlin:android.bzl", "kt_android_library")

_CONFIG_JAR_COMMAND = """
set -e
JAR="$(location @bazel_tools//tools/jdk:jar)"
JAR="$(location @local_jdk//:bin/jar)"
SRC="$<"
[[ "$$(basename "$${SRC}")" = 'robolectric.properties' ]] || {
echo 'Must be named: robolectric.properties';
Expand Down
2 changes: 1 addition & 1 deletion build_extensions/axt_deps_versions.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ JANK_VERSION = "1.0.1"
# this should match the kotlin toolchain version eg bazel_rules/rules_kotlin/toolchains/kotlin_jvm/kt_jvm_toolchains.bzl KT_VERSION
# and WORKSPACE:KOTLIN_VERSION
KOTLIN_VERSION = "1.8.20"
GRPC_VERSION = "1.54.1" # needs to match WORKSPACE:GRPC_VERSION
GRPC_VERSION = "1.66.0" # needs to match WORKSPACE:GRPC_VERSION

ATF_VERSION = "3.1.2" # accessibilitytestframework
JUNIT_VERSION = "4.13.2"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
load("@io_bazel_rules_kotlin//kotlin:jvm.bzl", "kt_jvm_library")
load("@rules_kotlin//kotlin:jvm.bzl", "kt_jvm_library")

package(
default_visibility = [
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
load("@io_bazel_rules_kotlin//kotlin:jvm.bzl", "kt_jvm_test")
load("@rules_kotlin//kotlin:jvm.bzl", "kt_jvm_test")

kt_jvm_test(
name = "JarCombinerTest",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
load("@io_bazel_rules_kotlin//kotlin:jvm.bzl", "kt_jvm_library")
load("@rules_kotlin//kotlin:jvm.bzl", "kt_jvm_library")

kt_jvm_library(
name = "jarvalidator_lib",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
load("@io_bazel_rules_kotlin//kotlin:jvm.bzl", "kt_jvm_test")
load("@rules_kotlin//kotlin:jvm.bzl", "kt_jvm_test")

kt_jvm_test(
name = "JarValidatorTest",
Expand Down
4 changes: 2 additions & 2 deletions build_extensions/kt_android_library.bzl
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"""Wrapper for android_library for bazel.
"""

load("@io_bazel_rules_kotlin//kotlin:android.bzl", io_kt_android_library = "kt_android_library")
load("@rules_kotlin//kotlin:android.bzl", _kt_android_library = "kt_android_library")

def kt_android_library(**kwargs):
io_kt_android_library(**kwargs)
_kt_android_library(**kwargs)
2 changes: 1 addition & 1 deletion build_extensions/maven/axt_android_aar.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ axt_android_aar = rule(
default = ["com.google.guava:guava", "com.google.dagger"],
),
"_jdk": attr.label(
default = Label("@bazel_tools//tools/jdk"),
default = Label("@local_jdk//:bin/java"),
providers = [java_common.JavaRuntimeInfo],
),
"_combine_jars_java": attr.label(
Expand Down
2 changes: 1 addition & 1 deletion build_extensions/maven/jarjar.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ jarjar = rule(
allow_single_file = [".txt"],
),
"_jdk": attr.label(
default = Label("@bazel_tools//tools/jdk"),
default = Label("@local_jdk//:bin/java"),
providers = [java_common.JavaRuntimeInfo],
),
"_jarjar": attr.label(
Expand Down
2 changes: 1 addition & 1 deletion build_extensions/maven/kotlin_info.bzl
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"""Utility for determing if given target is a kotlin target"""

load("@io_bazel_rules_kotlin//kotlin/internal:defs.bzl", "KtJvmInfo")
load("@rules_kotlin//kotlin/internal:defs.bzl", "KtJvmInfo")

def is_kotlin(target):
return KtJvmInfo in target
2 changes: 1 addition & 1 deletion build_extensions/maven/maven_artifact.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,7 @@ maven_artifact = rule(
doc = "Map of maven dependency to a csv list of excluded dependencies. eg {\"com.google.foo:foo\":\"com.google.bar:bar,com.google.bar:bar-none\"}",
),
"_jar": attr.label(
default = Label("@bazel_tools//tools/jdk:jar"),
default = Label("@local_jdk//:bin/jar"),
executable = True,
allow_files = True,
cfg = "exec",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
load("@io_bazel_rules_kotlin//kotlin:jvm.bzl", "kt_jvm_library")
load("@rules_kotlin//kotlin:jvm.bzl", "kt_jvm_library")

package(
default_visibility = [
Expand Down
Loading

0 comments on commit 66bd7aa

Please sign in to comment.