diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index afb6f206e4..fea2e797dd 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -56,6 +56,11 @@ val localProperties: Properties? = if (localPropertiesFile.exists()) {
val quickstartCredentialsDir: String? = localProperties?.getProperty("quickstart.credentials.dir")
val benchmarkBackupFile: String? = localProperties?.getProperty("benchmark.backup.file")
+val isInstrumentationTestRun = gradle.startParameter.taskNames.any { taskName ->
+ val lower = taskName.lowercase()
+ lower.contains("androidtest") || lower.contains("connectedcheck")
+}
+
val selectableVariants = listOf(
"nightlyProdSpinner",
"nightlyProdPerf",
@@ -68,13 +73,11 @@ val selectableVariants = listOf(
"playProdMocked",
"playProdNonMinifiedMocked",
"playProdBenchmark",
- "playProdInstrumentation",
"playProdRelease",
"playStagingDebug",
"playStagingCanary",
"playStagingSpinner",
"playStagingPerf",
- "playStagingInstrumentation",
"playStagingRelease",
"playProdQuickstart",
"playStagingQuickstart",
@@ -132,7 +135,6 @@ android {
ndkVersion = libs.versions.ndk.get()
flavorDimensions += listOf("distribution", "environment")
- testBuildType = "instrumentation"
android.bundle.language.enableSplit = false
@@ -219,6 +221,10 @@ android {
versionCode = (canonicalVersionCode * maxHotfixVersions) + possibleHotfixVersions[currentHotfixVersion]
versionName = canonicalVersionName
+ if (isInstrumentationTestRun) {
+ applicationIdSuffix = ".test_run"
+ }
+
minSdk = libs.versions.minSdk.get().toInt()
targetSdk = libs.versions.targetSdk.get().toInt()
@@ -344,18 +350,6 @@ android {
buildConfigField("String", "BUILD_VARIANT_TYPE", "\"Release\"")
}
- create("instrumentation") {
- initWith(getByName("debug"))
- isDefault = false
- isMinifyEnabled = false
- matchingFallbacks += "debug"
- applicationIdSuffix = ".instrumentation"
-
- buildConfigField("String", "BUILD_VARIANT_TYPE", "\"Instrumentation\"")
- buildConfigField("String", "STRIPE_BASE_URL", "\"http://127.0.0.1:8080/stripe\"")
- buildConfigField("String[]", "UNIDENTIFIED_SENDER_TRUST_ROOTS", "new String[]{ \"BVT/2gHqbrG1xzuIypLIOjFgMtihrMld1/5TGADL6Dhv\"}")
- }
-
create("spinner") {
initWith(getByName("debug"))
isDefault = false
@@ -538,8 +532,8 @@ androidComponents {
transformationRequest.set(renameRequest)
}
- // Include the test-only library on debug builds.
- if (variant.buildType != "instrumentation") {
+ // Include the test-only library on non-release builds.
+ if (variant.buildType == "release") {
variant.packaging.jniLibs.excludes.add("**/libsignal_jni_testing.so")
variant.androidResources.ignoreAssetsPatterns.add("libsignal-testing.md")
}
@@ -749,7 +743,7 @@ dependencies {
"canaryImplementation"(libs.square.leakcanary)
- "instrumentationImplementation"(libs.androidx.fragment.testing) {
+ androidTestImplementation(libs.androidx.fragment.testing) {
exclude(group = "androidx.test", module = "core")
}
diff --git a/app/src/androidTest/java/org/thoughtcrime/securesms/SignalInstrumentationApplicationContext.kt b/app/src/androidTest/java/org/thoughtcrime/securesms/SignalInstrumentationApplicationContext.kt
index 2cdf9e4944..2fd05f01bb 100644
--- a/app/src/androidTest/java/org/thoughtcrime/securesms/SignalInstrumentationApplicationContext.kt
+++ b/app/src/androidTest/java/org/thoughtcrime/securesms/SignalInstrumentationApplicationContext.kt
@@ -1,5 +1,6 @@
package org.thoughtcrime.securesms
+import android.content.Context
import org.signal.core.util.concurrent.SignalExecutors
import org.signal.core.util.logging.AndroidLogger
import org.signal.core.util.logging.Log
@@ -11,6 +12,7 @@ import org.thoughtcrime.securesms.dependencies.InstrumentationApplicationDepende
import org.thoughtcrime.securesms.logging.CustomSignalProtocolLogger
import org.thoughtcrime.securesms.logging.PersistentLogger
import org.thoughtcrime.securesms.testing.InMemoryLogger
+import org.thoughtcrime.securesms.util.Environment
/**
* Application context for running instrumentation tests (aka androidTests).
@@ -19,6 +21,11 @@ class SignalInstrumentationApplicationContext : ApplicationContext() {
val inMemoryLogger: InMemoryLogger = InMemoryLogger()
+ override fun attachBaseContext(base: Context?) {
+ Environment.IS_INSTRUMENTATION = true
+ super.attachBaseContext(base)
+ }
+
override fun initializeAppDependencies() {
val default = ApplicationDependencyProvider(this)
AppDependencies.init(this, InstrumentationApplicationDependencyProvider(this, default))
diff --git a/app/src/instrumentation/AndroidManifest.xml b/app/src/instrumentation/AndroidManifest.xml
deleted file mode 100644
index 8297919d99..0000000000
--- a/app/src/instrumentation/AndroidManifest.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/app/src/instrumentation/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/instrumentation/res/mipmap-anydpi-v26/ic_launcher.xml
deleted file mode 100644
index 12bf65e9dd..0000000000
--- a/app/src/instrumentation/res/mipmap-anydpi-v26/ic_launcher.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/instrumentation/res/values/strings.xml b/app/src/instrumentation/res/values/strings.xml
deleted file mode 100644
index 79bdc34914..0000000000
--- a/app/src/instrumentation/res/values/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
- Signal (Instrumentation)
-
diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/Environment.kt b/app/src/main/java/org/thoughtcrime/securesms/util/Environment.kt
index d971051e58..dd849cc71f 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/util/Environment.kt
+++ b/app/src/main/java/org/thoughtcrime/securesms/util/Environment.kt
@@ -11,10 +11,12 @@ object Environment {
const val IS_STAGING: Boolean = BuildConfig.BUILD_ENVIRONMENT_TYPE == "Staging" || BuildConfig.BUILD_ENVIRONMENT_TYPE == "Pnp" || BuildConfig.BUILD_ENVIRONMENT_TYPE == "Backup"
const val IS_NIGHTLY: Boolean = BuildConfig.BUILD_DISTRIBUTION_TYPE == "nightly"
const val IS_WEBSITE: Boolean = BuildConfig.BUILD_DISTRIBUTION_TYPE == "website"
- const val IS_INSTRUMENTATION: Boolean = BuildConfig.BUILD_VARIANT_TYPE == "Instrumentation" || BuildConfig.BUILD_VARIANT_TYPE == "Benchmark"
const val IS_BENCHMARK: Boolean = BuildConfig.BUILD_VARIANT_TYPE == "Benchmark"
const val IS_PERF: Boolean = BuildConfig.BUILD_VARIANT_TYPE == "Perf"
+ @JvmField
+ var IS_INSTRUMENTATION: Boolean = IS_BENCHMARK
+
fun isInternal(): Boolean {
return !IS_INSTRUMENTATION && (BuildConfig.DEBUG || IS_NIGHTLY || IS_PERF || IS_STAGING)
}
diff --git a/build.gradle.kts b/build.gradle.kts
index 18344318eb..b114a04f71 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -81,7 +81,7 @@ tasks.register("qa") {
gradle.projectsEvaluated {
val appTestTask = tasks.findByPath(":Signal-Android:testPlayProdReleaseUnitTest")!!
val appLintTask = tasks.findByPath(":Signal-Android:lintPlayProdRelease")!!
- val appCompileInstrumentationTask = tasks.findByPath(":Signal-Android:compilePlayProdInstrumentationAndroidTestSources")
+ val appCompileInstrumentationTask = tasks.findByPath(":Signal-Android:compilePlayProdDebugAndroidTestSources")
tasks.named("qa") {
dependsOn("ktlintCheck")