From 7e6c89931d13e3bcfb5047fa4438356813f3b0dd Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Tue, 4 Aug 2026 07:46:41 -0400 Subject: [PATCH] Fix hang in DraftRepositoryTest. --- .../conversation/drafts/DraftRepositoryTest.kt | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/app/src/test/java/org/thoughtcrime/securesms/conversation/drafts/DraftRepositoryTest.kt b/app/src/test/java/org/thoughtcrime/securesms/conversation/drafts/DraftRepositoryTest.kt index bed846eedd..c68c9eb81d 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/conversation/drafts/DraftRepositoryTest.kt +++ b/app/src/test/java/org/thoughtcrime/securesms/conversation/drafts/DraftRepositoryTest.kt @@ -8,6 +8,9 @@ package org.thoughtcrime.securesms.conversation.drafts import android.app.Application import io.mockk.every import io.mockk.mockk +import io.reactivex.rxjava3.plugins.RxJavaPlugins +import io.reactivex.rxjava3.schedulers.Schedulers +import org.junit.After import org.junit.Assert.assertEquals import org.junit.Assert.assertNull import org.junit.Before @@ -48,10 +51,19 @@ class DraftRepositoryTest { fun setUp() { Log.initialize(SystemOutLogger()) + // Another test sharing this Robolectric sandbox may have already initialized Schedulers.io() to a + // TestScheduler that nothing advances, which would make load()'s blockingGet() wait forever. Run inline. + RxJavaPlugins.setIoSchedulerHandler { Schedulers.trampoline() } + draftTable = mockk(relaxed = true) every { draftTable.getDrafts(any()) } returns DraftTable.Drafts() } + @After + fun tearDown() { + RxJavaPlugins.setIoSchedulerHandler(null) + } + @Test fun `unprocessed share is delivered and advances the marker`() { val result = repository(shareDataTimestamp = 1000L, draftText = "shared text").load()