From 2b53965f112f8d6bfa461b8ab558d80d9aa03ffc Mon Sep 17 00:00:00 2001 From: Yahor Berdnikau Date: Wed, 20 Oct 2021 12:03:04 +0200 Subject: [PATCH] Add tasks and annotations for Gradle/Jvm and Gradle/Js tests. We will split our tests into supported platforms, like JVM, Js, etc... Tests for supported Gradle features should be added per platform. To run any test (except daemons) also "all" task was added. ^KT-45745 In Progress --- .../build.gradle.kts | 42 +++++++++++++++++-- .../kotlin/gradle/testbase/testTags.kt | 20 ++++++++- 2 files changed, 57 insertions(+), 5 deletions(-) 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