From a643ce89ff8c2292de322c1e0936c51a58ce204e Mon Sep 17 00:00:00 2001 From: "sebastian.sellmair" Date: Tue, 22 Jun 2021 15:36:43 +0200 Subject: [PATCH] [Commonizer] Add CommonizerQueueTest.`test diamond output targets`() ^KT-47301 --- .../kotlin/commonizer/CommonizerQueueTest.kt | 37 ++++++++++++++++++- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/native/commonizer/tests/org/jetbrains/kotlin/commonizer/CommonizerQueueTest.kt b/native/commonizer/tests/org/jetbrains/kotlin/commonizer/CommonizerQueueTest.kt index 8974c0db1a9..5310c45026c 100644 --- a/native/commonizer/tests/org/jetbrains/kotlin/commonizer/CommonizerQueueTest.kt +++ b/native/commonizer/tests/org/jetbrains/kotlin/commonizer/CommonizerQueueTest.kt @@ -15,6 +15,8 @@ import kotlin.test.assertEquals class CommonizerQueueTest { + data class CommonizerInvocation(val inputs: TargetDependent, val output: SharedCommonizerTarget) + @Test fun `test retained targets`() { val queue = CommonizerQueue( @@ -85,8 +87,6 @@ class CommonizerQueueTest { @Test fun `test commonizer being called`() { - data class CommonizerInvocation(val inputs: TargetDependent, val output: SharedCommonizerTarget) - val commonizerInvocations = mutableListOf() val storageManager = LockBasedStorageManager.NO_LOCKS val providedTargets = setOf("a", "b", "c").map(::parseCommonizerTarget).toSet() @@ -131,4 +131,37 @@ class CommonizerQueueTest { "Expected commonizer being invoked with selected targets for abcInvocation" ) } + + @Test + fun `test diamond output targets`() { + val commonizerInvocations = mutableListOf() + + val queue = CommonizerQueue( + storageManager = LockBasedStorageManager.NO_LOCKS, + outputTargets = setOf("(a, b)", "(b, c)", "(a, b, c)") + .map(::parseCommonizerTarget).map { it as SharedCommonizerTarget } + .toSet(), + deserializers = EagerTargetDependent( + setOf("a", "b", "c", "d").map(::parseCommonizerTarget) + ) { CommonizerQueue.Deserializer { null } }, + commonizer = { inputs, output -> + commonizerInvocations.add(CommonizerInvocation(inputs, output)) + CirRootNode(CommonizedGroup(0), LockBasedStorageManager.NO_LOCKS.createNullableLazyValue { CirRoot.create(output) }) + }, + serializer = { _, _ -> }, + ) + + queue.invokeAll() + assertEquals(emptySet(), queue.pendingOutputTargets, "Expected empty pendingOutputTargets") + assertEquals(emptySet(), queue.retainedCommonizedTargets, "Expected no retained commonized targets") + assertEquals(emptySet(), queue.retainedDeserializedTargets, "Expected no retained deserialized targets") + assertEquals(emptySet(), queue.retainedTargetDependencies.entries, "Expected no retained dependencies") + assertEquals( + listOf( + listOf(parseCommonizerTarget("a"), parseCommonizerTarget("b")), + listOf(parseCommonizerTarget("b"), parseCommonizerTarget("c")), + listOf(parseCommonizerTarget("(a, b)"), parseCommonizerTarget("(b, c)")) + ), commonizerInvocations.map { it.inputs.targets } + ) + } }