[Gradle][MPP] Implement assertAllImplementationsAlsoImplement assertion function
^KT-52726 Verification Pending
This commit is contained in:
committed by
Space
parent
134ed4bae1
commit
63232b1849
+2
-11
@@ -7,23 +7,14 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.gradle.mpp
|
package org.jetbrains.kotlin.gradle.mpp
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.gradle.assertAllImplementationsAlsoImplement
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
|
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.InternalKotlinCompilation
|
import org.jetbrains.kotlin.gradle.plugin.mpp.InternalKotlinCompilation
|
||||||
import org.jetbrains.kotlin.gradle.reflections
|
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import kotlin.reflect.full.isSubclassOf
|
|
||||||
import kotlin.test.fail
|
|
||||||
|
|
||||||
class InternalKotlinSourceSetTest {
|
class InternalKotlinSourceSetTest {
|
||||||
@Test
|
@Test
|
||||||
fun `test - all implementations of KotlinCompilation - implement InternalKotlinCompilation`() {
|
fun `test - all implementations of KotlinCompilation - implement InternalKotlinCompilation`() {
|
||||||
val subtypesOfKotlinSourceSet = reflections.getSubTypesOf(KotlinCompilation::class.java)
|
assertAllImplementationsAlsoImplement(KotlinCompilation::class, InternalKotlinCompilation::class)
|
||||||
subtypesOfKotlinSourceSet
|
|
||||||
.filter { subtype -> !subtype.isInterface }
|
|
||||||
.forEach { implementation ->
|
|
||||||
if (!implementation.kotlin.isSubclassOf(InternalKotlinCompilation::class)) {
|
|
||||||
fail("$implementation does not implement ${InternalKotlinCompilation::class}")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+16
@@ -6,5 +6,21 @@
|
|||||||
package org.jetbrains.kotlin.gradle
|
package org.jetbrains.kotlin.gradle
|
||||||
|
|
||||||
import org.reflections.Reflections
|
import org.reflections.Reflections
|
||||||
|
import kotlin.reflect.KClass
|
||||||
|
import kotlin.reflect.full.isSubclassOf
|
||||||
|
import kotlin.test.fail
|
||||||
|
|
||||||
val reflections = Reflections("org.jetbrains")
|
val reflections = Reflections("org.jetbrains")
|
||||||
|
|
||||||
|
fun assertAllImplementationsAlsoImplement(
|
||||||
|
baseInterface: KClass<*>,
|
||||||
|
requiredInterface: KClass<*>
|
||||||
|
) {
|
||||||
|
reflections.getSubTypesOf(baseInterface.java)
|
||||||
|
.filter { subtype -> !subtype.isInterface }
|
||||||
|
.forEach { implementation ->
|
||||||
|
if (!implementation.kotlin.isSubclassOf(requiredInterface)) {
|
||||||
|
fail("${implementation.kotlin} does not implement $requiredInterface")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
+3
-8
@@ -7,6 +7,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.gradle.sources
|
package org.jetbrains.kotlin.gradle.sources
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.gradle.assertAllImplementationsAlsoImplement
|
||||||
import org.jetbrains.kotlin.gradle.buildProjectWithMPP
|
import org.jetbrains.kotlin.gradle.buildProjectWithMPP
|
||||||
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
|
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
|
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
|
||||||
@@ -14,6 +15,7 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.sources.InternalKotlinSourceSet
|
import org.jetbrains.kotlin.gradle.plugin.sources.InternalKotlinSourceSet
|
||||||
import org.jetbrains.kotlin.gradle.plugin.sources.internal
|
import org.jetbrains.kotlin.gradle.plugin.sources.internal
|
||||||
import org.jetbrains.kotlin.gradle.reflections
|
import org.jetbrains.kotlin.gradle.reflections
|
||||||
|
import org.junit.jupiter.api.assertAll
|
||||||
import kotlin.reflect.full.isSubclassOf
|
import kotlin.reflect.full.isSubclassOf
|
||||||
import kotlin.test.Test
|
import kotlin.test.Test
|
||||||
import kotlin.test.assertEquals
|
import kotlin.test.assertEquals
|
||||||
@@ -22,14 +24,7 @@ import kotlin.test.fail
|
|||||||
class InternalKotlinSourceSetTest {
|
class InternalKotlinSourceSetTest {
|
||||||
@Test
|
@Test
|
||||||
fun `test - all implementations of KotlinSourceSet - implement InternalKotlinSourceSet`() {
|
fun `test - all implementations of KotlinSourceSet - implement InternalKotlinSourceSet`() {
|
||||||
val subtypesOfKotlinSourceSet = reflections.getSubTypesOf(KotlinSourceSet::class.java)
|
assertAllImplementationsAlsoImplement(KotlinSourceSet::class, InternalKotlinSourceSet::class)
|
||||||
subtypesOfKotlinSourceSet
|
|
||||||
.filter { subtype -> !subtype.isInterface }
|
|
||||||
.forEach { implementation ->
|
|
||||||
if (!implementation.kotlin.isSubclassOf(InternalKotlinSourceSet::class)) {
|
|
||||||
fail("$implementation does not implement ${InternalKotlinSourceSet::class}")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
Reference in New Issue
Block a user