[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
|
||||
|
||||
import org.jetbrains.kotlin.gradle.assertAllImplementationsAlsoImplement
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.InternalKotlinCompilation
|
||||
import org.jetbrains.kotlin.gradle.reflections
|
||||
import org.junit.Test
|
||||
import kotlin.reflect.full.isSubclassOf
|
||||
import kotlin.test.fail
|
||||
|
||||
class InternalKotlinSourceSetTest {
|
||||
@Test
|
||||
fun `test - all implementations of KotlinCompilation - implement InternalKotlinCompilation`() {
|
||||
val subtypesOfKotlinSourceSet = reflections.getSubTypesOf(KotlinCompilation::class.java)
|
||||
subtypesOfKotlinSourceSet
|
||||
.filter { subtype -> !subtype.isInterface }
|
||||
.forEach { implementation ->
|
||||
if (!implementation.kotlin.isSubclassOf(InternalKotlinCompilation::class)) {
|
||||
fail("$implementation does not implement ${InternalKotlinCompilation::class}")
|
||||
}
|
||||
}
|
||||
assertAllImplementationsAlsoImplement(KotlinCompilation::class, InternalKotlinCompilation::class)
|
||||
}
|
||||
}
|
||||
|
||||
+17
-1
@@ -6,5 +6,21 @@
|
||||
package org.jetbrains.kotlin.gradle
|
||||
|
||||
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
|
||||
|
||||
import org.jetbrains.kotlin.gradle.assertAllImplementationsAlsoImplement
|
||||
import org.jetbrains.kotlin.gradle.buildProjectWithMPP
|
||||
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
|
||||
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.internal
|
||||
import org.jetbrains.kotlin.gradle.reflections
|
||||
import org.junit.jupiter.api.assertAll
|
||||
import kotlin.reflect.full.isSubclassOf
|
||||
import kotlin.test.Test
|
||||
import kotlin.test.assertEquals
|
||||
@@ -22,14 +24,7 @@ import kotlin.test.fail
|
||||
class InternalKotlinSourceSetTest {
|
||||
@Test
|
||||
fun `test - all implementations of KotlinSourceSet - implement InternalKotlinSourceSet`() {
|
||||
val subtypesOfKotlinSourceSet = reflections.getSubTypesOf(KotlinSourceSet::class.java)
|
||||
subtypesOfKotlinSourceSet
|
||||
.filter { subtype -> !subtype.isInterface }
|
||||
.forEach { implementation ->
|
||||
if (!implementation.kotlin.isSubclassOf(InternalKotlinSourceSet::class)) {
|
||||
fail("$implementation does not implement ${InternalKotlinSourceSet::class}")
|
||||
}
|
||||
}
|
||||
assertAllImplementationsAlsoImplement(KotlinSourceSet::class, InternalKotlinSourceSet::class)
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user