From 16de2efa9e2e849f7e381e54006bf7d580dd0a38 Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Wed, 20 May 2026 12:23:55 -0400 Subject: [PATCH] Fix non-instrumentation variants not being able to run unit tests. --- app/build.gradle.kts | 3 +++ build.gradle.kts | 12 ++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 06b8ff17ee..94da5e4bd4 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -524,6 +524,9 @@ android { androidComponents { beforeVariants { variant -> variant.enable = variant.name in selectableVariants + if (variant.enable) { + (variant as? com.android.build.api.variant.HasUnitTestBuilder)?.enableUnitTest = true + } } onVariants(selector().all()) { variant: com.android.build.api.variant.ApplicationVariant -> // Rename APK to include version name diff --git a/build.gradle.kts b/build.gradle.kts index d97289b11a..18344318eb 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -79,8 +79,8 @@ tasks.register("qa") { // Wire up QA dependencies after all projects are evaluated gradle.projectsEvaluated { - val appTestTask = tasks.findByPath(":Signal-Android:testPlayProdReleaseUnitTest") - val appLintTask = tasks.findByPath(":Signal-Android:lintPlayProdRelease") + val appTestTask = tasks.findByPath(":Signal-Android:testPlayProdReleaseUnitTest")!! + val appLintTask = tasks.findByPath(":Signal-Android:lintPlayProdRelease")!! val appCompileInstrumentationTask = tasks.findByPath(":Signal-Android:compilePlayProdInstrumentationAndroidTestSources") tasks.named("qa") { @@ -89,8 +89,8 @@ gradle.projectsEvaluated { dependsOn("checkStopship") // Main app tasks - appTestTask?.let { dependsOn(it) } - appLintTask?.let { dependsOn(it) } + dependsOn(appTestTask) + dependsOn(appLintTask) // Instrumentation appCompileInstrumentationTask?.let { dependsOn(it) } @@ -120,11 +120,11 @@ gradle.projectsEvaluated { // If you let all of these things run in parallel, gradle will likely OOM. // To avoid this, we put non-app tests and lints behind the much heavier app tests and lints. subprojects.filter { it.name != "Signal-Android" }.forEach { subproject -> - appTestTask?.let { task -> + appTestTask.let { task -> subproject.tasks.findByName("testDebugUnitTest")?.mustRunAfter(task) subproject.tasks.findByName("test")?.mustRunAfter(task) } - appLintTask?.let { task -> + appLintTask.let { task -> subproject.tasks.findByName("lintDebug")?.mustRunAfter(task) } }