diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle.kts index af583bd50fa..ace202c0e68 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle.kts @@ -161,11 +161,24 @@ if (isTeamcityBuild) { } val KGP_TEST_TASKS_GROUP = "Kotlin Gradle Plugin Verification" +val maxParallelTestForks = (Runtime.getRuntime().availableProcessors() / 4).coerceAtLeast(1) + +val allParallelTestsTask = tasks.register("kgpAllParallelTests") { + group = KGP_TEST_TASKS_GROUP + description = "Runs all tests for Kotlin Gradle plugins except daemon ones" + + maxParallelForks = maxParallelTestForks + + useJUnitPlatform { + excludeTags("DaemonsKGP") + includeEngines("junit-jupiter") + } +} val simpleTestsTask = tasks.register("kgpSimpleTests") { group = KGP_TEST_TASKS_GROUP - description = "Run only simple tests for Kotlin Gradle Plugin" - maxParallelForks = (Runtime.getRuntime().availableProcessors() / 4).coerceAtLeast(1) + description = "Run only simple tests for Kotlin Gradle Plugin (deprecated)" + maxParallelForks = maxParallelTestForks useJUnitPlatform { includeTags("SimpleKGP") @@ -173,6 +186,26 @@ val simpleTestsTask = tasks.register("kgpSimpleTests") { } } +val jvmTestsTask = tasks.register("kgpJvmTests") { + group = KGP_TEST_TASKS_GROUP + description = "Run tests for Kotlin/JVM part of Gradle plugin" + maxParallelForks = maxParallelTestForks + useJUnitPlatform { + includeTags("JvmKGP") + includeEngines("junit-jupiter") + } +} + +val jsTestsTask = tasks.register("kgpJsTests") { + group = KGP_TEST_TASKS_GROUP + description = "Run tests for Kotlin/JS part of Gradle plugin" + maxParallelForks = maxParallelTestForks + useJUnitPlatform { + includeTags("JsKGP") + includeEngines("junit-jupiter") + } +} + // Daemon tests could run only sequentially as they could not be shared between parallel test builds val daemonsTestsTask = tasks.register("kgpDaemonTests") { group = KGP_TEST_TASKS_GROUP @@ -189,7 +222,7 @@ val daemonsTestsTask = tasks.register("kgpDaemonTests") { tasks.named("check") { dependsOn("testAdvanceGradleVersion") - dependsOn(simpleTestsTask, daemonsTestsTask) + dependsOn(simpleTestsTask, jvmTestsTask, jsTestsTask, daemonsTestsTask) if (isTeamcityBuild) { dependsOn("testAdvanceGradleVersionMppAndAndroid") dependsOn("testMppAndAndroid") @@ -234,7 +267,10 @@ tasks.withType { useAndroidSdk() val shouldApplyJunitPlatform = name !in setOf( + allParallelTestsTask.name, simpleTestsTask.name, + jvmTestsTask.name, + jsTestsTask.name, daemonsTestsTask.name ) if (shouldApplyJunitPlatform) { diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/testTags.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/testTags.kt index 22f64274e00..82dd995c6ef 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/testTags.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/testTags.kt @@ -8,7 +8,7 @@ package org.jetbrains.kotlin.gradle.testbase import org.junit.jupiter.api.Tag /** - * Add it to test classes performing simple KGP checks. + * Add it to test classes performing simple KGP checks (deprecated). */ @Target(AnnotationTarget.CLASS, AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.FUNCTION) @Retention(AnnotationRetention.RUNTIME) @@ -18,7 +18,23 @@ annotation class SimpleGradlePluginTests /** * Add it to test classes performing Gradle or Kotlin daemon checks. */ -@Target(AnnotationTarget.CLASS, AnnotationTarget.ANNOTATION_CLASS) +@Target(AnnotationTarget.CLASS, AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.FUNCTION) @Retention(AnnotationRetention.RUNTIME) @Tag("DaemonsKGP") annotation class DaemonsGradlePluginTests + +/** + * Add it to tests covering Kotlin Gradle Plugin/JVM platform. + */ +@Target(AnnotationTarget.CLASS, AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.FUNCTION) +@Retention(AnnotationRetention.RUNTIME) +@Tag("JvmKGP") +annotation class JvmGradlePluginTests + +/** + * Add it to tests covering Kotlin Gradle Plugin/JS platform. + */ +@Target(AnnotationTarget.CLASS, AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.FUNCTION) +@Retention(AnnotationRetention.RUNTIME) +@Tag("JsKGP") +annotation class JsGradlePluginTests \ No newline at end of file