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
This commit is contained in:
Yahor Berdnikau
2021-10-20 12:03:04 +02:00
committed by Space
parent d5f6674d2d
commit 2b53965f11
2 changed files with 57 additions and 5 deletions
@@ -161,11 +161,24 @@ if (isTeamcityBuild) {
} }
val KGP_TEST_TASKS_GROUP = "Kotlin Gradle Plugin Verification" val KGP_TEST_TASKS_GROUP = "Kotlin Gradle Plugin Verification"
val maxParallelTestForks = (Runtime.getRuntime().availableProcessors() / 4).coerceAtLeast(1)
val allParallelTestsTask = tasks.register<Test>("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<Test>("kgpSimpleTests") { val simpleTestsTask = tasks.register<Test>("kgpSimpleTests") {
group = KGP_TEST_TASKS_GROUP group = KGP_TEST_TASKS_GROUP
description = "Run only simple tests for Kotlin Gradle Plugin" description = "Run only simple tests for Kotlin Gradle Plugin (deprecated)"
maxParallelForks = (Runtime.getRuntime().availableProcessors() / 4).coerceAtLeast(1) maxParallelForks = maxParallelTestForks
useJUnitPlatform { useJUnitPlatform {
includeTags("SimpleKGP") includeTags("SimpleKGP")
@@ -173,6 +186,26 @@ val simpleTestsTask = tasks.register<Test>("kgpSimpleTests") {
} }
} }
val jvmTestsTask = tasks.register<Test>("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<Test>("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 // Daemon tests could run only sequentially as they could not be shared between parallel test builds
val daemonsTestsTask = tasks.register<Test>("kgpDaemonTests") { val daemonsTestsTask = tasks.register<Test>("kgpDaemonTests") {
group = KGP_TEST_TASKS_GROUP group = KGP_TEST_TASKS_GROUP
@@ -189,7 +222,7 @@ val daemonsTestsTask = tasks.register<Test>("kgpDaemonTests") {
tasks.named<Task>("check") { tasks.named<Task>("check") {
dependsOn("testAdvanceGradleVersion") dependsOn("testAdvanceGradleVersion")
dependsOn(simpleTestsTask, daemonsTestsTask) dependsOn(simpleTestsTask, jvmTestsTask, jsTestsTask, daemonsTestsTask)
if (isTeamcityBuild) { if (isTeamcityBuild) {
dependsOn("testAdvanceGradleVersionMppAndAndroid") dependsOn("testAdvanceGradleVersionMppAndAndroid")
dependsOn("testMppAndAndroid") dependsOn("testMppAndAndroid")
@@ -234,7 +267,10 @@ tasks.withType<Test> {
useAndroidSdk() useAndroidSdk()
val shouldApplyJunitPlatform = name !in setOf( val shouldApplyJunitPlatform = name !in setOf(
allParallelTestsTask.name,
simpleTestsTask.name, simpleTestsTask.name,
jvmTestsTask.name,
jsTestsTask.name,
daemonsTestsTask.name daemonsTestsTask.name
) )
if (shouldApplyJunitPlatform) { if (shouldApplyJunitPlatform) {
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.gradle.testbase
import org.junit.jupiter.api.Tag 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) @Target(AnnotationTarget.CLASS, AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.FUNCTION)
@Retention(AnnotationRetention.RUNTIME) @Retention(AnnotationRetention.RUNTIME)
@@ -18,7 +18,23 @@ annotation class SimpleGradlePluginTests
/** /**
* Add it to test classes performing Gradle or Kotlin daemon checks. * 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) @Retention(AnnotationRetention.RUNTIME)
@Tag("DaemonsKGP") @Tag("DaemonsKGP")
annotation class DaemonsGradlePluginTests 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