srctree

Robin Linden parent dabdc881 f54ab7fe
Set up Robolectric Android tests in the Bazel build

inlinesplit
.github/workflows/ci.yaml added: 81, removed: 7, total 74
@@ -42,6 +42,10 @@ jobs:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v2
# Failed to create a Robolectric sandbox: Android SDK 29 requires Java 9
- uses: actions/setup-java@v1
with:
java-version: 9
- name: Set up Android
run: |
echo "y" | $ANDROID_HOME/tools/bin/sdkmanager --install "ndk;$NDK_VERSION" | grep -v = || true
 
WORKSPACE added: 81, removed: 7, total 74
@@ -32,6 +32,17 @@ http_archive(
urls = ["https://github.com/bazelbuild/rules_android/archive/v0.1.1.zip"],
)
 
http_archive(
name = "robolectric",
sha256 = "d4f2eb078a51f4e534ebf5e18b6cd4646d05eae9b362ac40b93831bdf46112c7",
strip_prefix = "robolectric-bazel-4.4",
urls = ["https://github.com/robolectric/robolectric-bazel/archive/4.4.tar.gz"],
)
 
load("@robolectric//bazel:robolectric.bzl", "robolectric_repositories")
 
robolectric_repositories()
 
STARDOC_TAG = "0.4.0"
 
STARDOC_SHA = "36b8d6c2260068b9ff82faea2f7add164bf3436eac9ba3ec14809f335346d66a"
@@ -58,16 +69,22 @@ load("@rules_jvm_external//:defs.bzl", "maven_install")
 
maven_install(
artifacts = [
"androidx.room:room-compiler:2.2.5",
"androidx.room:room-ktx:2.2.5",
"androidx.room:room-runtime:2.2.5",
"androidx.room:room-testing:2.2.5",
"androidx.test.ext:junit:1.1.2",
"com.google.code.gson:gson:2.8.6",
"com.google.dagger:dagger:2.30.1",
"com.google.guava:guava:19.0",
"com.typesafe.scala-logging:scala-logging_2.11:3.7.2",
"javax.inject:javax.inject:1",
"junit:junit:4.13.1",
"org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.2",
"org.jetbrains.kotlinx:kotlinx-coroutines-test:1.4.2",
"org.jetbrains:annotations:13.0",
"org.slf4j:slf4j-api:1.7.25",
"org.robolectric:robolectric:4.4",
"org.scala-lang:scala-library:2.11.12",
"androidx.lifecycle:lifecycle-extensions:2.2.0",
"androidx.lifecycle:lifecycle-livedata-ktx:2.2.0",
 
core/BUILD.bazel added: 81, removed: 7, total 74
@@ -1,5 +1,5 @@
load("@io_bazel_rules_kotlin//kotlin:kotlin.bzl", "kt_jvm_test")
load("@rules_android//android:rules.bzl", "android_library")
load("@io_bazel_rules_kotlin//kotlin:kotlin.bzl", "kt_android_library", "kt_jvm_test")
load("@rules_android//android:rules.bzl", "android_library", "android_local_test")
 
android_library(
name = "core",
@@ -23,3 +23,35 @@ kt_jvm_test(
"@maven//:junit_junit",
],
)
 
kt_android_library(
name = "contact_dao_test_lib",
srcs = ["src/androidTest/kotlin/db/ContactDaoTest.kt"],
custom_package = "ltd.evilcorp.core.db",
manifest = "src/main/AndroidManifest.xml",
deps = [
"//core/src/main/kotlin/db",
"@maven//:androidx_room_room_ktx",
"@maven//:androidx_room_room_testing",
"@maven//:androidx_test_ext_junit",
"@maven//:com_google_code_gson_gson",
"@maven//:junit_junit",
"@maven//:org_jetbrains_kotlinx_kotlinx_coroutines_test",
],
)
 
android_local_test(
name = "contact_dao_test",
size = "small",
custom_package = "ltd.evilcorp.core.db",
manifest_values = {
"minSdkVersion": "19",
"targetSdkVersion": "29",
},
test_class = "ltd.evilcorp.core.db.ContactDaoTest",
deps = [
":contact_dao_test_lib",
"@maven//:org_robolectric_robolectric",
"@robolectric//bazel:android-all",
],
)
 
core/src/androidTest/kotlin/db/ContactDaoTest.kt added: 81, removed: 7, total 74
@@ -29,6 +29,7 @@ class ContactDaoTest {
Room.inMemoryDatabaseBuilder(InstrumentationRegistry.getInstrumentation().targetContext, Database::class.java)
.setTransactionExecutor(dispatcher.asExecutor())
.setQueryExecutor(dispatcher.asExecutor())
.allowMainThreadQueries()
.build()
private val dao = db.contactDao()
 
 
core/src/main/kotlin/db/BUILD.bazel added: 81, removed: 7, total 74
@@ -1,4 +1,5 @@
load("@io_bazel_rules_kotlin//kotlin:kotlin.bzl", "kt_android_library")
load("@rules_java//java:defs.bzl", "java_library", "java_plugin")
 
kt_android_library(
name = "db",
@@ -6,8 +7,27 @@ kt_android_library(
custom_package = "ltd.evilcorp.core.db",
visibility = ["//core:__subpackages__"],
deps = [
":androidx_room_room_compiler_library",
"//core/src/main/kotlin/vo",
"@maven//:androidx_room_room_runtime",
"@maven//:org_jetbrains_kotlinx_kotlinx_coroutines_core",
],
)
 
java_plugin(
name = "androidx_room_room_compiler_plugin",
processor_class = "androidx.room.RoomProcessor",
deps = ["@maven//:androidx_room_room_compiler"],
)
 
java_library(
name = "androidx_room_room_compiler_library",
exported_plugins = [":androidx_room_room_compiler_plugin"],
neverlink = True,
exports = [
"@maven//:androidx_room_room_common",
"@maven//:androidx_room_room_compiler",
"@maven//:androidx_room_room_ktx",
"@maven//:androidx_room_room_runtime",
],
)