diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/mpp/InternalKotlinCompilationTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/mpp/InternalKotlinCompilationTest.kt index 8a7b0452d29..48abf1f4aa1 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/mpp/InternalKotlinCompilationTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/mpp/InternalKotlinCompilationTest.kt @@ -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) } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/reflectionUtils.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/reflectionUtils.kt index 45c7274d91d..f516ab906f4 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/reflectionUtils.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/reflectionUtils.kt @@ -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") \ No newline at end of file +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") + } + } +} diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/sources/InternalKotlinSourceSetTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/sources/InternalKotlinSourceSetTest.kt index 0431ac40d6b..a9fe1f44b22 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/sources/InternalKotlinSourceSetTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/sources/InternalKotlinSourceSetTest.kt @@ -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