Cover rejected activity commands at the native queue boundary

This commit is contained in:
evgeny committed 2026-10-27 20:11:15 +01:00
1 parent 61266986e5
commit f941066934
2 files changed
+21 -2

No files matched your search

@@ -34,13 +34,16 @@ object NativeLib {
val activityRequests = mutableListOf<Boolean>()
var activityAttempts = 0
var failActivityRequest = false
var acceptActivityRequest = true
fun notifyNetworkActive() { networkNotifications.incrementAndGet() }
fun isReady(): Boolean = ready
fun updateSockets(config: String): Boolean { socketUpdates.add(config); return acceptSocketUpdate }
fun setActive(active: Boolean) {
fun setActive(active: Boolean): Boolean {
activityAttempts++
check(!failActivityRequest) { "activity request unavailable" }
if (!acceptActivityRequest) return false
activityRequests.add(active)
return true
}
}
@@ -15,11 +15,17 @@ class CoreActivityLifecycleTest {
NativeLib.activityAttempts = 0
NativeLib.activityRequests.clear()
NativeLib.failActivityRequest = false
NativeLib.acceptActivityRequest = true
NativeLib.ready = true
LogManager.entries.clear()
}
@After fun release() { clearOwners(); NativeLib.failActivityRequest = false; NativeLib.ready = true }
@After fun release() {
clearOwners()
NativeLib.failActivityRequest = false
NativeLib.acceptActivityRequest = true
NativeLib.ready = true
}
private fun clearOwners() {
NativeLib.ready = false
@@ -119,6 +125,16 @@ class CoreActivityLifecycleTest {
}
}
@Test fun rejectedNativePostDoesNotSuppressRetry() {
NativeLib.acceptActivityRequest = false
CoreActivity.visible(true)
assertTrue(NativeLib.activityRequests.isEmpty())
NativeLib.acceptActivityRequest = true
CoreActivity.sync()
assertEquals(2, NativeLib.activityAttempts)
assertEquals(listOf(true), NativeLib.activityRequests)
}
@Test fun resetRejectsBackgroundCallerWithoutInvalidatingCache() {
CoreActivity.sync()
assertTrue(offMain { CoreActivity.reset() } is IllegalStateException)