From fa260e4727314b85c7a4348392998da49aa117a5 Mon Sep 17 00:00:00 2001 From: Emily Ploszaj Date: Thu, 27 Aug 2026 18:11:10 -0500 Subject: [PATCH 1/3] Adjust minSdk version --- .../test-app/test-app.gradle.kts | 4 +++- build.gradle.kts | 2 +- firebase-appdistribution/test-app/test-app.gradle | 2 +- .../google/firebase/concurrent/ExecutorsRegistrar.java | 8 +++----- firebase-dataconnect/demo/build.gradle.kts | 2 +- .../google/firebase/firestore/spec/MemorySpecTest.java | 2 +- .../display/FirebaseInAppMessagingDisplayTest.java | 2 +- .../inappmessaging/display/OnSwipeListenerTest.java | 1 - .../display/internal/FiamImageLoaderTest.java | 2 +- .../display/internal/FiamWindowManagerTest.java | 2 +- firebase-sessions/benchmark/benchmark.gradle.kts | 3 ++- smoke-tests/build.gradle | 2 +- 12 files changed, 16 insertions(+), 16 deletions(-) diff --git a/ai-logic/firebase-ai-ksp-processor/test-app/test-app.gradle.kts b/ai-logic/firebase-ai-ksp-processor/test-app/test-app.gradle.kts index f71c61b5f66..81efb563d78 100644 --- a/ai-logic/firebase-ai-ksp-processor/test-app/test-app.gradle.kts +++ b/ai-logic/firebase-ai-ksp-processor/test-app/test-app.gradle.kts @@ -24,11 +24,13 @@ plugins { } android { + val minSdkVersion: Int by rootProject + namespace = "com.google.firebase.testing.processor" compileSdk = 36 defaultConfig { applicationId = "com.google.firebase.testing.processor" - minSdk = 23 + minSdk = minSdkVersion targetSdk = 36 versionCode = 1 versionName = "1.0" diff --git a/build.gradle.kts b/build.gradle.kts index 6ff7b3d66d7..35af65f99fb 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -35,7 +35,7 @@ extra["targetSdkVersion"] = 34 extra["compileSdkVersion"] = 34 -extra["minSdkVersion"] = 23 +extra["minSdkVersion"] = 24 firebaseContinuousIntegration { ignorePaths = diff --git a/firebase-appdistribution/test-app/test-app.gradle b/firebase-appdistribution/test-app/test-app.gradle index 0498bd56bb7..0c46770c8eb 100644 --- a/firebase-appdistribution/test-app/test-app.gradle +++ b/firebase-appdistribution/test-app/test-app.gradle @@ -25,7 +25,7 @@ android { defaultConfig { applicationId "com.googletest.firebase.appdistribution.testapp" - minSdk 23 + minSdkVersion project.minSdkVersion targetSdk 34 versionName "3.3" versionCode 8 diff --git a/firebase-common/src/main/java/com/google/firebase/concurrent/ExecutorsRegistrar.java b/firebase-common/src/main/java/com/google/firebase/concurrent/ExecutorsRegistrar.java index 45f22916f13..8afd53dae7b 100644 --- a/firebase-common/src/main/java/com/google/firebase/concurrent/ExecutorsRegistrar.java +++ b/firebase-common/src/main/java/com/google/firebase/concurrent/ExecutorsRegistrar.java @@ -111,11 +111,9 @@ private static ThreadFactory factory( private static StrictMode.ThreadPolicy bgPolicy() { StrictMode.ThreadPolicy.Builder builder = new StrictMode.ThreadPolicy.Builder().detectNetwork(); - if (Build.VERSION.SDK_INT >= 23) { - builder.detectResourceMismatches(); - if (Build.VERSION.SDK_INT >= 26) { - builder.detectUnbufferedIo(); - } + builder.detectResourceMismatches(); + if (Build.VERSION.SDK_INT >= 26) { + builder.detectUnbufferedIo(); } if (BuildConfig.DEBUG) { builder.penaltyDeath(); diff --git a/firebase-dataconnect/demo/build.gradle.kts b/firebase-dataconnect/demo/build.gradle.kts index e8abc985ae9..68fb4e85c27 100644 --- a/firebase-dataconnect/demo/build.gradle.kts +++ b/firebase-dataconnect/demo/build.gradle.kts @@ -73,7 +73,7 @@ android { namespace = "com.google.firebase.dataconnect.minimaldemo" compileSdk = 36 defaultConfig { - minSdk = 23 + minSdk = 24 targetSdk = 36 versionCode = 1 versionName = "1.0" diff --git a/firebase-firestore/src/test/java/com/google/firebase/firestore/spec/MemorySpecTest.java b/firebase-firestore/src/test/java/com/google/firebase/firestore/spec/MemorySpecTest.java index 324cf2716b0..9add9b4780f 100644 --- a/firebase-firestore/src/test/java/com/google/firebase/firestore/spec/MemorySpecTest.java +++ b/firebase-firestore/src/test/java/com/google/firebase/firestore/spec/MemorySpecTest.java @@ -28,7 +28,7 @@ import org.robolectric.annotation.Config; @RunWith(RobolectricTestRunner.class) -@Config(sdk = 23, manifest = Config.NONE) +@Config(manifest = Config.NONE) public class MemorySpecTest extends SpecTestCase { private static final String DURABLE_PERSISTENCE = "durable-persistence"; diff --git a/firebase-inappmessaging-display/src/test/java/com/google/firebase/inappmessaging/display/FirebaseInAppMessagingDisplayTest.java b/firebase-inappmessaging-display/src/test/java/com/google/firebase/inappmessaging/display/FirebaseInAppMessagingDisplayTest.java index 803ec125db5..e5298f86c35 100644 --- a/firebase-inappmessaging-display/src/test/java/com/google/firebase/inappmessaging/display/FirebaseInAppMessagingDisplayTest.java +++ b/firebase-inappmessaging-display/src/test/java/com/google/firebase/inappmessaging/display/FirebaseInAppMessagingDisplayTest.java @@ -94,7 +94,7 @@ import org.robolectric.shadows.ShadowPackageManager; @RunWith(RobolectricTestRunner.class) -@Config(sdk = 23, qualifiers = "port") +@Config(qualifiers = "port") @LooperMode(LooperMode.Mode.LEGACY) public class FirebaseInAppMessagingDisplayTest { diff --git a/firebase-inappmessaging-display/src/test/java/com/google/firebase/inappmessaging/display/OnSwipeListenerTest.java b/firebase-inappmessaging-display/src/test/java/com/google/firebase/inappmessaging/display/OnSwipeListenerTest.java index da2872acbdd..0c7f976153d 100644 --- a/firebase-inappmessaging-display/src/test/java/com/google/firebase/inappmessaging/display/OnSwipeListenerTest.java +++ b/firebase-inappmessaging-display/src/test/java/com/google/firebase/inappmessaging/display/OnSwipeListenerTest.java @@ -25,7 +25,6 @@ import org.robolectric.annotation.Config; @RunWith(RobolectricTestRunner.class) -@Config(sdk = 23) public class OnSwipeListenerTest { private OnSwipeUpListener onSwipeListener; private boolean sweptUp; diff --git a/firebase-inappmessaging-display/src/test/java/com/google/firebase/inappmessaging/display/internal/FiamImageLoaderTest.java b/firebase-inappmessaging-display/src/test/java/com/google/firebase/inappmessaging/display/internal/FiamImageLoaderTest.java index a319395a344..f54f45aa629 100644 --- a/firebase-inappmessaging-display/src/test/java/com/google/firebase/inappmessaging/display/internal/FiamImageLoaderTest.java +++ b/firebase-inappmessaging-display/src/test/java/com/google/firebase/inappmessaging/display/internal/FiamImageLoaderTest.java @@ -36,7 +36,7 @@ import org.robolectric.annotation.Config; @RunWith(RobolectricTestRunner.class) -@Config(sdk = 23, qualifiers = "por") +@Config(qualifiers = "por") public class FiamImageLoaderTest { private static final String IMAGE_URL = "https://www.imgur.com"; @Mock private RequestManager glideRequestManager; diff --git a/firebase-inappmessaging-display/src/test/java/com/google/firebase/inappmessaging/display/internal/FiamWindowManagerTest.java b/firebase-inappmessaging-display/src/test/java/com/google/firebase/inappmessaging/display/internal/FiamWindowManagerTest.java index 5297590c3a8..0bf51425462 100644 --- a/firebase-inappmessaging-display/src/test/java/com/google/firebase/inappmessaging/display/internal/FiamWindowManagerTest.java +++ b/firebase-inappmessaging-display/src/test/java/com/google/firebase/inappmessaging/display/internal/FiamWindowManagerTest.java @@ -42,7 +42,7 @@ import org.robolectric.annotation.Config; @RunWith(RobolectricTestRunner.class) -@Config(sdk = 23, qualifiers = "port") +@Config(qualifiers = "port") public class FiamWindowManagerTest { private static final Context appContext = ApplicationProvider.getApplicationContext(); private static final int WINDOW_GRAVITY = Gravity.CENTER; diff --git a/firebase-sessions/benchmark/benchmark.gradle.kts b/firebase-sessions/benchmark/benchmark.gradle.kts index e1b3af37e27..0b2776e7536 100644 --- a/firebase-sessions/benchmark/benchmark.gradle.kts +++ b/firebase-sessions/benchmark/benchmark.gradle.kts @@ -24,13 +24,14 @@ plugins { android { val compileSdkVersion: Int by rootProject val targetSdkVersion: Int by rootProject + val minSdkVersion: Int by rootProject namespace = "com.google.firebase.benchmark.sessions" compileSdk = compileSdkVersion defaultConfig { targetSdk = targetSdkVersion - minSdk = 23 + minSdk = minSdkVersion testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } diff --git a/smoke-tests/build.gradle b/smoke-tests/build.gradle index dbdd4bd93bc..6a96e1108c3 100644 --- a/smoke-tests/build.gradle +++ b/smoke-tests/build.gradle @@ -37,7 +37,7 @@ android { compileSdkVersion 34 namespace = "com.google.firebase.testing" defaultConfig { - minSdkVersion 23 + minSdkVersion 24 multiDexEnabled true testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" versionName "1.0.0" From 8b07bd756f567d15b207e711aaf19b4fcff4c220 Mon Sep 17 00:00:00 2001 From: Emily Ploszaj Date: Mon, 31 Aug 2026 10:57:21 -0500 Subject: [PATCH 2/3] Update common testing --- ...DataCollectionPreNDefaultDisabledTest.java | 112 ------------------ .../FirebasePlatformLoggingTest.java | 18 +-- 2 files changed, 1 insertion(+), 129 deletions(-) delete mode 100644 firebase-common/data-collection-tests/src/test/java/com/google/firebase/DataCollectionPreNDefaultDisabledTest.java diff --git a/firebase-common/data-collection-tests/src/test/java/com/google/firebase/DataCollectionPreNDefaultDisabledTest.java b/firebase-common/data-collection-tests/src/test/java/com/google/firebase/DataCollectionPreNDefaultDisabledTest.java deleted file mode 100644 index f95e249c7cf..00000000000 --- a/firebase-common/data-collection-tests/src/test/java/com/google/firebase/DataCollectionPreNDefaultDisabledTest.java +++ /dev/null @@ -1,112 +0,0 @@ -// Copyright 2019 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package com.google.firebase; - -import static com.google.common.truth.Truth.assertThat; -import static com.google.firebase.DataCollectionTestUtil.getSharedPreferences; -import static com.google.firebase.DataCollectionTestUtil.setSharedPreferencesTo; -import static com.google.firebase.DataCollectionTestUtil.withApp; - -import android.content.SharedPreferences; -import com.google.firebase.internal.DataCollectionConfigStorage; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.robolectric.RobolectricTestRunner; -import org.robolectric.annotation.Config; -import org.robolectric.annotation.LooperMode; - -@RunWith(RobolectricTestRunner.class) -@Config(sdk = Config.OLDEST_SDK) -public class DataCollectionPreNDefaultDisabledTest { - - @Test - public void isDataCollectionDefaultEnabled_whenMetadataFalse_shouldReturnFalse() { - withApp(app -> assertThat(app.isDataCollectionDefaultEnabled()).isFalse()); - } - - @Test - public void isDataCollectionDefaultEnabled_whenMetadataFalseAndPrefsFalse_shouldReturnFalse() { - setSharedPreferencesTo(false); - withApp(app -> assertThat(app.isDataCollectionDefaultEnabled()).isFalse()); - } - - @Test - public void isDataCollectionDefaultEnabled_whenMetadataFalseAndPrefsTrue_shouldReturnTrue() { - setSharedPreferencesTo(true); - withApp(app -> assertThat(app.isDataCollectionDefaultEnabled()).isTrue()); - } - - @Test - public void isDataCollectionDefaultEnabled_whenMetadataFalseAndPrefsNull_shouldReturnFalse() { - setSharedPreferencesTo(null); - withApp(app -> assertThat(app.isDataCollectionDefaultEnabled()).isFalse()); - } - - @Test - public void setDataCollectionDefaultEnabledTrue_shouldUpdateSharedPrefs() { - withApp( - app -> { - app.setDataCollectionDefaultEnabled(true); - SharedPreferences prefs = getSharedPreferences(); - assertThat(prefs.contains(DataCollectionConfigStorage.DATA_COLLECTION_DEFAULT_ENABLED)) - .isTrue(); - assertThat( - prefs.getBoolean( - DataCollectionConfigStorage.DATA_COLLECTION_DEFAULT_ENABLED, false)) - .isTrue(); - assertThat(app.isDataCollectionDefaultEnabled()).isTrue(); - app.setDataCollectionDefaultEnabled(false); - assertThat( - prefs.getBoolean( - DataCollectionConfigStorage.DATA_COLLECTION_DEFAULT_ENABLED, false)) - .isFalse(); - assertThat(app.isDataCollectionDefaultEnabled()).isFalse(); - app.setDataCollectionDefaultEnabled(null); - assertThat(prefs.contains(DataCollectionConfigStorage.DATA_COLLECTION_DEFAULT_ENABLED)) - .isFalse(); - // Fallback on manifest value - assertThat(app.isDataCollectionDefaultEnabled()).isFalse(); - }); - } - - @Test - @LooperMode(LooperMode.Mode.LEGACY) - public void setDataCollectionDefaultEnabledTrue_shouldEmitEvents() { - withApp( - app -> { - DataCollectionDefaultChangeRegistrar.ChangeListener changeListener = - app.get(DataCollectionDefaultChangeRegistrar.ChangeListener.class); - assertThat(changeListener.changes).isEmpty(); - - app.setDataCollectionDefaultEnabled(false); - assertThat(changeListener.changes).isEmpty(); - - app.setDataCollectionDefaultEnabled(true); - assertThat(changeListener.changes).containsExactly(true); - - app.setDataCollectionDefaultEnabled(false); - assertThat(changeListener.changes).containsExactly(true, false).inOrder(); - - app.setDataCollectionDefaultEnabled(null); - assertThat(changeListener.changes).containsExactly(true, false).inOrder(); - - app.setDataCollectionDefaultEnabled(true); - assertThat(changeListener.changes).containsExactly(true, false, true).inOrder(); - - app.setDataCollectionDefaultEnabled(null); - assertThat(changeListener.changes).containsExactly(true, false, true, false).inOrder(); - }); - } -} diff --git a/firebase-common/src/test/java/com/google/firebase/platforminfo/FirebasePlatformLoggingTest.java b/firebase-common/src/test/java/com/google/firebase/platforminfo/FirebasePlatformLoggingTest.java index 46c301927de..69ce0023d39 100644 --- a/firebase-common/src/test/java/com/google/firebase/platforminfo/FirebasePlatformLoggingTest.java +++ b/firebase-common/src/test/java/com/google/firebase/platforminfo/FirebasePlatformLoggingTest.java @@ -86,22 +86,6 @@ public void test_auto_atHighEnoughApiLevel() { }); } - @Test - @Config(sdk = Config.OLDEST_SDK) - public void test_auto_atNotHighEnoughApiLevel() { - ShadowPackageManager shadowPackageManager = - shadowOf(ApplicationProvider.getApplicationContext().getPackageManager()); - shadowPackageManager.setSystemFeature(PackageManager.FEATURE_AUTOMOTIVE, true); - withApp( - "myApp", - OPTIONS, - app -> { - UserAgentPublisher ua = app.get(UserAgentPublisher.class); - - assertThat(ua.getUserAgent()).containsMatch(Pattern.compile("android-installer/($|\\s)")); - }); - } - @Test @Config(sdk = Build.VERSION_CODES.O) public void test_embedded_atHighEnoughApiLevel() { @@ -119,7 +103,7 @@ public void test_embedded_atHighEnoughApiLevel() { } @Test - @Config(sdk = Build.VERSION_CODES.M) + @Config(sdk = Build.VERSION_CODES.N) public void test_embedded_atNotHighEnoughApiLevel() { ShadowPackageManager shadowPackageManager = shadowOf(ApplicationProvider.getApplicationContext().getPackageManager()); From 47f1c5c44375e60767aaf8a5c74a4c1ec501b1c0 Mon Sep 17 00:00:00 2001 From: Emily Ploszaj Date: Mon, 31 Aug 2026 14:48:47 -0500 Subject: [PATCH 3/3] Adjust other testing --- .../impl/InstallActivityTest.java | 4 +- .../core/NetworkConnectivityRestoredFlow.kt | 23 +----- ...NetworkConnectivityRestoredFlowUnitTest.kt | 81 +------------------ .../display/OnSwipeListenerTest.java | 1 - .../DisplayNotificationRoboTest.java | 11 ++- .../src/test/resources/robolectric.properties | 2 +- .../google/firebase/storage/DeleteTest.java | 3 +- .../google/firebase/storage/DownloadTest.java | 3 +- .../com/google/firebase/storage/ListTest.java | 3 +- .../google/firebase/storage/MetadataTest.java | 3 +- .../firebase/storage/NetworkRequestTest.java | 3 +- .../google/firebase/storage/PathingTest.java | 3 +- .../google/firebase/storage/UploadTest.java | 3 +- .../internal/StorageReferenceUriTest.java | 3 +- 14 files changed, 21 insertions(+), 125 deletions(-) diff --git a/firebase-appdistribution/src/test/java/com/google/firebase/appdistribution/impl/InstallActivityTest.java b/firebase-appdistribution/src/test/java/com/google/firebase/appdistribution/impl/InstallActivityTest.java index 18e6596ca50..0f225dd73c6 100644 --- a/firebase-appdistribution/src/test/java/com/google/firebase/appdistribution/impl/InstallActivityTest.java +++ b/firebase-appdistribution/src/test/java/com/google/firebase/appdistribution/impl/InstallActivityTest.java @@ -41,9 +41,9 @@ @RunWith(RobolectricTestRunner.class) @Config( sdk = { - Build.VERSION_CODES.M, + Build.VERSION_CODES.N, Build.VERSION_CODES.P - }) // Test on both pre-Oreo (M) and post-Oreo (P) to cover both code paths + }) // Test on both pre-Oreo (N) and post-Oreo (P) to cover both code paths public class InstallActivityTest { private ShadowPackageManager shadowPackageManager; diff --git a/firebase-dataconnect/src/main/kotlin/com/google/firebase/dataconnect/core/NetworkConnectivityRestoredFlow.kt b/firebase-dataconnect/src/main/kotlin/com/google/firebase/dataconnect/core/NetworkConnectivityRestoredFlow.kt index 61bfc6fb974..5d3b6d4a5af 100644 --- a/firebase-dataconnect/src/main/kotlin/com/google/firebase/dataconnect/core/NetworkConnectivityRestoredFlow.kt +++ b/firebase-dataconnect/src/main/kotlin/com/google/firebase/dataconnect/core/NetworkConnectivityRestoredFlow.kt @@ -20,9 +20,7 @@ import android.content.Context.CONNECTIVITY_SERVICE import android.net.ConnectivityManager import android.net.Network import android.net.NetworkCapabilities -import android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET import android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED -import android.net.NetworkRequest import android.os.Build import androidx.annotation.RequiresApi import com.google.firebase.dataconnect.util.coroutines.ConflatedSignal @@ -55,26 +53,7 @@ internal data object NetworkConnectivityRestored * @return A cold [Flow] emitting [NetworkConnectivityRestored] on network state transitions that * suggest that network connectivity is now (or continues to be) available. */ -internal fun networkConnectivityRestoredFlow(context: Context): Flow { - return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - networkConnectivityRestoredFlowAPI24(context) - } else { - networkConnectivityRestoredFlowAPI23(context) - } -} - -private fun networkConnectivityRestoredFlowAPI23( - context: Context -): Flow = - networkConnectivityRestoredFlow(context) { - val request = NetworkRequest.Builder().addCapability(NET_CAPABILITY_INTERNET).build() - registerNetworkCallback(request, it) - } - -@RequiresApi(Build.VERSION_CODES.N) -private fun networkConnectivityRestoredFlowAPI24( - context: Context -): Flow = +internal fun networkConnectivityRestoredFlow(context: Context): Flow = networkConnectivityRestoredFlow(context) { registerDefaultNetworkCallback(it) } private fun networkConnectivityRestoredFlow( diff --git a/firebase-dataconnect/src/test/kotlin/com/google/firebase/dataconnect/core/NetworkConnectivityRestoredFlowUnitTest.kt b/firebase-dataconnect/src/test/kotlin/com/google/firebase/dataconnect/core/NetworkConnectivityRestoredFlowUnitTest.kt index eebf0b2458f..cec36f3bb94 100644 --- a/firebase-dataconnect/src/test/kotlin/com/google/firebase/dataconnect/core/NetworkConnectivityRestoredFlowUnitTest.kt +++ b/firebase-dataconnect/src/test/kotlin/com/google/firebase/dataconnect/core/NetworkConnectivityRestoredFlowUnitTest.kt @@ -130,41 +130,9 @@ class NetworkConnectivityRestoredFlowUnitTest { } } - @Test - @Config(sdk = [Build.VERSION_CODES.M]) - fun `networkConnectivityRestoredFlow() collection registers and unregisters callback API 23`() = - runTest { - val connectivityManager: ConnectivityManager = mockk(relaxed = true) - val context: Context = mockk { - every { getSystemService(CONNECTIVITY_SERVICE) } returns connectivityManager - } - - turbineScope { - val flow = networkConnectivityRestoredFlow(context) - val collector = flow.testIn(backgroundScope) - - val networkRequestSlot = slot() - val callbackSlot = slot() - verify(exactly = 1) { - connectivityManager.registerNetworkCallback( - capture(networkRequestSlot), - capture(callbackSlot) - ) - } - - val networkRequest = networkRequestSlot.captured - val expectedNetworkRequest = - NetworkRequest.Builder().addCapability(NET_CAPABILITY_INTERNET).build() - networkRequest shouldBe expectedNetworkRequest - - collector.cancelAndIgnoreRemainingEvents() - verify(exactly = 1) { connectivityManager.unregisterNetworkCallback(callbackSlot.captured) } - } - } - @Test @Config(sdk = [Build.VERSION_CODES.N]) - fun `networkConnectivityRestoredFlow() collection registers and unregisters callback API 24`() = + fun `networkConnectivityRestoredFlow() collection registers and unregisters callback`() = runTest { val connectivityManager: ConnectivityManager = mockk(relaxed = true) val context: Context = mockk { @@ -185,19 +153,9 @@ class NetworkConnectivityRestoredFlowUnitTest { } } - @Test - @Config(sdk = [Build.VERSION_CODES.M]) - fun `networkConnectivityRestoredFlow() collection unregisters callback on exception API 23`() = - `networkConnectivityRestoredFlow() collection unregisters callback on exception` { callback -> - every { registerNetworkCallback(any(), any()) } answers - { - callback(secondArg()) - } - } - @Test @Config(sdk = [Build.VERSION_CODES.N]) - fun `networkConnectivityRestoredFlow() collection unregisters callback on exception API 24`() = + fun `networkConnectivityRestoredFlow() collection unregisters callback on exception`() = `networkConnectivityRestoredFlow() collection unregisters callback on exception` { callback -> every { registerDefaultNetworkCallback(any()) } answers { @@ -234,18 +192,9 @@ class NetworkConnectivityRestoredFlowUnitTest { callbackUnregisteredSignal.await() shouldBe registeredCallback } - @Test - @Config(sdk = [Build.VERSION_CODES.M]) - fun `networkConnectivityRestoredFlow() sequential collection registers and unregisters callback API 23`() = - `networkConnectivityRestoredFlow() sequential collection registers and unregisters callback` { - networkRequest, - networkCallback -> - registerNetworkCallback(networkRequest(), networkCallback) - } - @Test @Config(sdk = [Build.VERSION_CODES.N]) - fun `networkConnectivityRestoredFlow() sequential collection registers and unregisters callback API 24`() = + fun `networkConnectivityRestoredFlow() sequential collection registers and unregisters callback`() = `networkConnectivityRestoredFlow() sequential collection registers and unregisters callback` { _, networkCallback -> @@ -283,20 +232,9 @@ class NetworkConnectivityRestoredFlowUnitTest { callbacks.shouldBeUnique() } - @Test - @Config(sdk = [Build.VERSION_CODES.M]) - fun `networkConnectivityRestoredFlow() parallel collection registers and unregisters callback API 23`() = - `networkConnectivityRestoredFlow() parallel collection registers and unregisters callback` { - onRegisterCallback -> - every { registerNetworkCallback(any(), any()) } coAnswers - { - onRegisterCallback(secondArg()) - } - } - @Test @Config(sdk = [Build.VERSION_CODES.N]) - fun `networkConnectivityRestoredFlow() parallel collection registers and unregisters callback API 24`() = + fun `networkConnectivityRestoredFlow() parallel collection registers and unregisters callback`() = `networkConnectivityRestoredFlow() parallel collection registers and unregisters callback` { onRegisterCallback -> every { registerDefaultNetworkCallback(any()) } coAnswers @@ -353,11 +291,6 @@ class NetworkConnectivityRestoredFlowUnitTest { } } - @Test - @Config(sdk = [Build.VERSION_CODES.M]) - fun `networkConnectivityRestoredFlow() emits expected events API 23`() = - testNetworkCallbackSequences(includeBlockedStatusChanged = false, api23CaptureCallback) - @Test @Config(sdk = [Build.VERSION_CODES.N]) fun `networkConnectivityRestoredFlow() emits expected events API 24`() = @@ -646,12 +579,6 @@ private fun networkCallbackSequenceArb( } } -private val api23CaptureCallback: - MockKVerificationScope.(ConnectivityManager, CapturingSlot) -> Unit = - { connectivityManager, slot -> - connectivityManager.registerNetworkCallback(any(), capture(slot)) - } - private val api24CaptureCallback: MockKVerificationScope.(ConnectivityManager, CapturingSlot) -> Unit = { connectivityManager, slot -> diff --git a/firebase-inappmessaging-display/src/test/java/com/google/firebase/inappmessaging/display/OnSwipeListenerTest.java b/firebase-inappmessaging-display/src/test/java/com/google/firebase/inappmessaging/display/OnSwipeListenerTest.java index 0c7f976153d..9d9c68f5aba 100644 --- a/firebase-inappmessaging-display/src/test/java/com/google/firebase/inappmessaging/display/OnSwipeListenerTest.java +++ b/firebase-inappmessaging-display/src/test/java/com/google/firebase/inappmessaging/display/OnSwipeListenerTest.java @@ -22,7 +22,6 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; -import org.robolectric.annotation.Config; @RunWith(RobolectricTestRunner.class) public class OnSwipeListenerTest { diff --git a/firebase-messaging/src/test/java/com/google/firebase/messaging/DisplayNotificationRoboTest.java b/firebase-messaging/src/test/java/com/google/firebase/messaging/DisplayNotificationRoboTest.java index fb90c50b01d..d10c7a4811e 100644 --- a/firebase-messaging/src/test/java/com/google/firebase/messaging/DisplayNotificationRoboTest.java +++ b/firebase-messaging/src/test/java/com/google/firebase/messaging/DisplayNotificationRoboTest.java @@ -154,7 +154,7 @@ public void testNoPayload() { .handleNotification()); Notification n = getSingleNotification(); - assertThat(shadowOf(n).getContentTitle().toString()).isEmpty(); + assertThat(shadowOf(n).getContentTitle()).isNull(); // ShadowNotification.getSmallIcon() doesn't work so access the real notification assertEquals(getAppIcon(), n.icon); } @@ -169,7 +169,7 @@ public void testNoTitle() { .handleNotification()); Notification n = getSingleNotification(); - assertThat(shadowOf(n).getContentTitle().toString()).isEmpty(); + assertThat(shadowOf(n).getContentTitle()).isNull(); // ShadowNotification.getSmallIcon() doesn't work so access the real notification assertEquals(com.google.firebase.messaging.test.R.drawable.gcm_icon, n.icon); } @@ -771,7 +771,7 @@ public void testBadTitleResource() { .handleNotification()); Notification n = getSingleNotification(); - assertThat(shadowOf(n).getContentTitle().toString()).isEmpty(); + assertThat(shadowOf(n).getContentTitle()).isNull(); } /** @@ -789,7 +789,7 @@ public void testWrongTitleArgs() { .handleNotification()); Notification n = getSingleNotification(); - assertThat(shadowOf(n).getContentTitle().toString()).isEmpty(); + assertThat(shadowOf(n).getContentTitle()).isNull(); } /** Test that a notification with a bad body resource name is still displayed. */ @@ -802,7 +802,7 @@ public void testBadBodyResource() { .handleNotification()); Notification n = getSingleNotification(); - assertThat(shadowOf(n).getContentText().toString()).isEmpty(); + assertThat(shadowOf(n).getContentText()).isNull(); } @Test @@ -820,7 +820,6 @@ public void testImage() { .isTrue(); Notification n = getSingleNotification(); - assertThat(n.largeIcon.sameAs(bitmap)).isTrue(); assertThat(shadowOf(n).getBigPicture().sameAs(bitmap)).isTrue(); } diff --git a/firebase-messaging/src/test/resources/robolectric.properties b/firebase-messaging/src/test/resources/robolectric.properties index a44b8420266..9c9cb50e67b 100644 --- a/firebase-messaging/src/test/resources/robolectric.properties +++ b/firebase-messaging/src/test/resources/robolectric.properties @@ -1 +1 @@ -sdk=23 +sdk=24 diff --git a/firebase-storage/src/test/java/com/google/firebase/storage/DeleteTest.java b/firebase-storage/src/test/java/com/google/firebase/storage/DeleteTest.java index f51a3fc6c62..0369fb7a138 100644 --- a/firebase-storage/src/test/java/com/google/firebase/storage/DeleteTest.java +++ b/firebase-storage/src/test/java/com/google/firebase/storage/DeleteTest.java @@ -14,7 +14,6 @@ package com.google.firebase.storage; -import android.os.Build; import com.google.android.gms.tasks.Task; import com.google.firebase.FirebaseApp; import com.google.firebase.storage.internal.MockClockHelper; @@ -32,7 +31,7 @@ /** Tests for {@link FirebaseStorage}. */ @RunWith(RobolectricTestRunner.class) -@Config(sdk = Build.VERSION_CODES.M) +@Config(sdk = Config.OLDEST_SDK) public class DeleteTest { @Rule public RetryRule retryRule = new RetryRule(3); diff --git a/firebase-storage/src/test/java/com/google/firebase/storage/DownloadTest.java b/firebase-storage/src/test/java/com/google/firebase/storage/DownloadTest.java index f47566058a7..01f508adbb5 100644 --- a/firebase-storage/src/test/java/com/google/firebase/storage/DownloadTest.java +++ b/firebase-storage/src/test/java/com/google/firebase/storage/DownloadTest.java @@ -21,7 +21,6 @@ import static org.robolectric.Shadows.shadowOf; import android.net.Uri; -import android.os.Build; import android.os.Looper; import com.google.android.gms.tasks.Task; import com.google.firebase.FirebaseApp; @@ -48,7 +47,7 @@ /** Tests for {@link FirebaseStorage}. */ @SuppressWarnings("ConstantConditions") @RunWith(RobolectricTestRunner.class) -@Config(sdk = Build.VERSION_CODES.M) +@Config(sdk = Config.OLDEST_SDK) public class DownloadTest { @Rule public RetryRule retryRule = new RetryRule(3); diff --git a/firebase-storage/src/test/java/com/google/firebase/storage/ListTest.java b/firebase-storage/src/test/java/com/google/firebase/storage/ListTest.java index dd7958c547a..b92089337f2 100644 --- a/firebase-storage/src/test/java/com/google/firebase/storage/ListTest.java +++ b/firebase-storage/src/test/java/com/google/firebase/storage/ListTest.java @@ -16,7 +16,6 @@ import static org.junit.Assert.fail; -import android.os.Build; import com.google.android.gms.tasks.Task; import com.google.firebase.FirebaseApp; import com.google.firebase.storage.internal.MockClockHelper; @@ -34,7 +33,7 @@ /** Tests for {@link FirebaseStorage}. */ @RunWith(RobolectricTestRunner.class) -@Config(sdk = Build.VERSION_CODES.M) +@Config(sdk = Config.OLDEST_SDK) public class ListTest { @Rule public RetryRule retryRule = new RetryRule(3); diff --git a/firebase-storage/src/test/java/com/google/firebase/storage/MetadataTest.java b/firebase-storage/src/test/java/com/google/firebase/storage/MetadataTest.java index 24c9ddc5093..1817fbd8537 100644 --- a/firebase-storage/src/test/java/com/google/firebase/storage/MetadataTest.java +++ b/firebase-storage/src/test/java/com/google/firebase/storage/MetadataTest.java @@ -14,7 +14,6 @@ package com.google.firebase.storage; -import android.os.Build; import com.google.android.gms.tasks.Task; import com.google.firebase.FirebaseApp; import com.google.firebase.storage.internal.MockClockHelper; @@ -32,7 +31,7 @@ /** Tests for {@link FirebaseStorage}. */ @RunWith(RobolectricTestRunner.class) -@Config(sdk = Build.VERSION_CODES.M) +@Config(sdk = Config.OLDEST_SDK) public class MetadataTest { @Rule public RetryRule retryRule = new RetryRule(3); diff --git a/firebase-storage/src/test/java/com/google/firebase/storage/NetworkRequestTest.java b/firebase-storage/src/test/java/com/google/firebase/storage/NetworkRequestTest.java index c3d3322e5c5..208800a3857 100644 --- a/firebase-storage/src/test/java/com/google/firebase/storage/NetworkRequestTest.java +++ b/firebase-storage/src/test/java/com/google/firebase/storage/NetworkRequestTest.java @@ -14,7 +14,6 @@ package com.google.firebase.storage; -import android.os.Build; import com.google.firebase.FirebaseApp; import com.google.firebase.storage.internal.MockClockHelper; import com.google.firebase.storage.internal.RobolectricThreadFix; @@ -30,7 +29,7 @@ import org.robolectric.annotation.Config; @RunWith(RobolectricTestRunner.class) -@Config(sdk = Build.VERSION_CODES.M) +@Config(sdk = Config.OLDEST_SDK) public class NetworkRequestTest { private FirebaseApp app; diff --git a/firebase-storage/src/test/java/com/google/firebase/storage/PathingTest.java b/firebase-storage/src/test/java/com/google/firebase/storage/PathingTest.java index 881fda6e5f1..5e895ba3af5 100644 --- a/firebase-storage/src/test/java/com/google/firebase/storage/PathingTest.java +++ b/firebase-storage/src/test/java/com/google/firebase/storage/PathingTest.java @@ -18,7 +18,6 @@ import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; -import android.os.Build; import androidx.test.core.app.ApplicationProvider; import com.google.firebase.FirebaseApp; import com.google.firebase.FirebaseOptions; @@ -36,7 +35,7 @@ /** Tests for {@link FirebaseStorage}. */ @RunWith(RobolectricTestRunner.class) -@Config(sdk = Build.VERSION_CODES.M) +@Config(sdk = Config.OLDEST_SDK) public class PathingTest { @Rule public RetryRule retryRule = new RetryRule(3); diff --git a/firebase-storage/src/test/java/com/google/firebase/storage/UploadTest.java b/firebase-storage/src/test/java/com/google/firebase/storage/UploadTest.java index 8d42f688221..c22ecd7f17a 100644 --- a/firebase-storage/src/test/java/com/google/firebase/storage/UploadTest.java +++ b/firebase-storage/src/test/java/com/google/firebase/storage/UploadTest.java @@ -20,7 +20,6 @@ import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.Uri; -import android.os.Build; import androidx.test.core.app.ApplicationProvider; import com.google.android.gms.tasks.OnCanceledListener; import com.google.android.gms.tasks.OnCompleteListener; @@ -62,7 +61,7 @@ /** Tests for {@link FirebaseStorage}. */ @SuppressWarnings("ConstantConditions") @RunWith(RobolectricTestRunner.class) -@Config(sdk = Build.VERSION_CODES.M) +@Config(sdk = Config.OLDEST_SDK) public class UploadTest { private static final String TEST_ASSET_ROOT = "assets/"; diff --git a/firebase-storage/src/test/java/com/google/firebase/storage/internal/StorageReferenceUriTest.java b/firebase-storage/src/test/java/com/google/firebase/storage/internal/StorageReferenceUriTest.java index 690c9c91f96..07f486bad55 100644 --- a/firebase-storage/src/test/java/com/google/firebase/storage/internal/StorageReferenceUriTest.java +++ b/firebase-storage/src/test/java/com/google/firebase/storage/internal/StorageReferenceUriTest.java @@ -15,7 +15,6 @@ package com.google.firebase.storage.internal; import android.net.Uri; -import android.os.Build; import com.google.firebase.emulators.EmulatedServiceSettings; import org.junit.Assert; import org.junit.Test; @@ -24,7 +23,7 @@ import org.robolectric.annotation.Config; @RunWith(RobolectricTestRunner.class) -@Config(sdk = Build.VERSION_CODES.M) +@Config(sdk = Config.OLDEST_SDK) public class StorageReferenceUriTest { private static final EmulatedServiceSettings EMULATOR_SETTINGS =