From 506d51a007e730594e4e5f05f00b4f94c4f24e05 Mon Sep 17 00:00:00 2001 From: NGB-Was-Taken <76197326+NGB-Was-Taken@users.noreply.github.com> Date: Fri, 7 Nov 2025 15:06:17 +0545 Subject: [PATCH] Fix flaky migration tests (#2663) --- .../test/java/mihon/core/migration/MigratorTest.kt | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/app/src/test/java/mihon/core/migration/MigratorTest.kt b/app/src/test/java/mihon/core/migration/MigratorTest.kt index eaaf7f088..2f8070676 100644 --- a/app/src/test/java/mihon/core/migration/MigratorTest.kt +++ b/app/src/test/java/mihon/core/migration/MigratorTest.kt @@ -1,9 +1,11 @@ package mihon.core.migration +import io.kotest.assertions.nondeterministic.eventually import io.mockk.slot import io.mockk.spyk import io.mockk.verify import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.DelicateCoroutinesApi import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import kotlinx.coroutines.newSingleThreadContext @@ -17,6 +19,7 @@ import org.junit.jupiter.api.Assertions.assertInstanceOf import org.junit.jupiter.api.BeforeAll import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test +import kotlin.time.Duration.Companion.seconds class MigratorTest { @@ -26,7 +29,7 @@ class MigratorTest { lateinit var migrationStrategyFactory: MigrationStrategyFactory @BeforeEach - fun initilize() { + fun initialize() { migrationContext = MigrationContext(false) migrationJobFactory = spyk(MigrationJobFactory(migrationContext, CoroutineScope(Dispatchers.Main + Job()))) migrationCompletedListener = spyk(block = {}) @@ -45,7 +48,7 @@ class MigratorTest { verify { migrationJobFactory.create(capture(migrations)) } assertEquals(1, migrations.captured.size) - verify { migrationCompletedListener() } + eventually(2.seconds) { verify { migrationCompletedListener() } } } @Test @@ -86,7 +89,7 @@ class MigratorTest { verify { migrationJobFactory.create(capture(migrations)) } assertEquals(2, migrations.captured.size) - verify { migrationCompletedListener() } + eventually(2.seconds) { verify { migrationCompletedListener() } } } @Test @@ -114,7 +117,7 @@ class MigratorTest { verify { migrationJobFactory.create(capture(migrations)) } assertEquals(10, migrations.captured.size) - verify { migrationCompletedListener() } + eventually(2.seconds) { verify { migrationCompletedListener() } } } @Test @@ -135,11 +138,12 @@ class MigratorTest { verify { migrationJobFactory.create(capture(migrations)) } assertEquals(2, migrations.captured.size) - verify { migrationCompletedListener() } + eventually(2.seconds) { verify { migrationCompletedListener() } } } companion object { + @OptIn(DelicateCoroutinesApi::class) val mainThreadSurrogate = newSingleThreadContext("UI thread") @BeforeAll