Skip to content

Commit 3640db9

Browse files
committed
fix flatten module order error
Fixes gh-1998
1 parent 4c56aa0 commit 3640db9

File tree

2 files changed

+11
-6
lines changed
  • projects/core/koin-core/src

2 files changed

+11
-6
lines changed

projects/core/koin-core/src/commonMain/kotlin/org/koin/core/module/Module.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ fun flatten(modules: List<Module>): Set<Module> {
248248
}
249249

250250
// Add all the included modules to the stack if they haven't been visited yet.
251-
for (module in current.includedModules) {
251+
for (module in current.includedModules.asReversed()) {
252252
if (module !in flatten) {
253253
stack += module
254254
}

projects/core/koin-core/src/commonTest/kotlin/org/koin/dsl/FlattenTest.kt

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package org.koin.dsl
22

33
import org.koin.core.module.flatten
44
import kotlin.test.Test
5+
import kotlin.test.assertEquals
56
import kotlin.test.assertTrue
67

78
class FlattenTest {
@@ -12,17 +13,17 @@ class FlattenTest {
1213
val m2 = module { }
1314
val modules = m1 + m2
1415

15-
assertTrue { flatten(modules) == setOf(m1, m2) }
16+
assertSetEqualsInOrder(flatten(modules), setOf(m1, m2))
1617
}
1718

1819
@Test
1920
fun test_flatten_common() {
2021
val m1 = module { }
2122
val m2 = module { }
22-
val m3 = module { includes(m1) }
23+
val m3 = module { includes(m1, m2) }
2324
val modules = m3 + m2
2425

25-
assertTrue { flatten(modules) == setOf(m3, m1, m2) }
26+
assertSetEqualsInOrder(flatten(modules), setOf(m3, m1, m2))
2627
}
2728

2829
@Test
@@ -32,7 +33,7 @@ class FlattenTest {
3233
val m3 = module { includes(m1) }
3334
val modules = m3 + m2
3435

35-
assertTrue { flatten(modules) == setOf(m3, m1, m2) }
36+
assertSetEqualsInOrder(flatten(modules), setOf(m3, m1, m2))
3637
}
3738

3839
@Test
@@ -43,6 +44,10 @@ class FlattenTest {
4344
val m3 = module { includes(m1) }
4445
val modules = m3 + m2
4546

46-
assertTrue { flatten(modules) == setOf(m3, m1, m4, m2) }
47+
assertSetEqualsInOrder(flatten(modules), setOf(m3, m1, m4, m2))
48+
}
49+
50+
private fun assertSetEqualsInOrder(actual: Set<Any>, expected: Set<Any>) {
51+
assertEquals(expected.toList(), actual.toList())
4752
}
4853
}

0 commit comments

Comments
 (0)