diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTarget.kt index c35622d6124..fbfd935779f 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTarget.kt @@ -18,6 +18,7 @@ import org.jetbrains.kotlin.gradle.targets.js.npm.NpmResolveTask import org.jetbrains.kotlin.gradle.targets.js.subtargets.KotlinBrowserJs import org.jetbrains.kotlin.gradle.targets.js.subtargets.KotlinNodeJs import org.jetbrains.kotlin.gradle.tasks.locateOrRegisterTask +import org.jetbrains.kotlin.gradle.testing.internal.getAggregatedTestTask import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName class KotlinJsTarget(project: Project, platformType: KotlinPlatformType) : @@ -25,7 +26,12 @@ class KotlinJsTarget(project: Project, platformType: KotlinPlatformType) : val npmResolveTaskHolder = project.locateOrRegisterTask("npmResolve") {} val testTaskName get() = lowerCamelCaseName(disambiguationClassifier, testTaskNameSuffix) - val testTask get() = project.tasks.maybeCreate(testTaskName) + val testTask + get() = project.getAggregatedTestTask( + name = testTaskName, + description = "Run JS tests for all platforms", + reportName = "jsAll" + ) val runTaskName get() = lowerCamelCaseName(disambiguationClassifier, runTaskNameSuffix) val runTask get() = project.tasks.maybeCreate(runTaskName) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTargetConfigurator.kt index 19b4bd24fb0..a22a587f906 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTargetConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTargetConfigurator.kt @@ -33,18 +33,6 @@ open class KotlinJsTargetConfigurator(kotlinPluginVersion: String) : override fun configureTest(target: KotlinOnlyTarget) { // tests configured in KotlinJsSubTarget.configure - - target as KotlinJsTarget - - if (target.disambiguationClassifier != null) { - val tasks = target.project.tasks - val check = tasks.findByName(JavaBasePlugin.CHECK_TASK_NAME) - - @Suppress("IfThenToSafeAccess") - if (check != null) { - check.dependsOn(target.testTask) - } - } } override fun buildCompilationProcessor(compilation: KotlinJsCompilation): KotlinSourceSetProcessor<*> { diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinJsSubTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinJsSubTarget.kt index 7ed57b59f90..e2a06596351 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinJsSubTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinJsSubTarget.kt @@ -15,6 +15,7 @@ import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest import org.jetbrains.kotlin.gradle.tasks.createOrRegisterTask import org.jetbrains.kotlin.gradle.testing.internal.configureConventions import org.jetbrains.kotlin.gradle.testing.internal.registerTestTask +import org.jetbrains.kotlin.gradle.testing.internal.registerTestTaskInAggregate import org.jetbrains.kotlin.utils.addIfNotNull abstract class KotlinJsSubTarget( @@ -73,10 +74,9 @@ abstract class KotlinJsSubTarget( testJs.nodeModulesToLoad.add(compileTask.outputFile.nameWithoutExtension) testJs.configureConventions() - - target.testTask.dependsOn(testJs) } + registerTestTaskInAggregate(testJs, target.testTask.doGetTask()) registerTestTask(testJs) project.afterEvaluate { diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/testing/internal/testsRegistry.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/testing/internal/testsRegistry.kt index 41162a151d9..99f5321ee96 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/testing/internal/testsRegistry.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/testing/internal/testsRegistry.kt @@ -15,13 +15,21 @@ import org.jetbrains.kotlin.gradle.tasks.AggregateTestReport import org.jetbrains.kotlin.gradle.tasks.locateOrRegisterTask private val Project.allTestsTask: TaskHolder - get() = locateOrRegisterTask("allTests") { aggregate -> - tasks.maybeCreate(LifecycleBasePlugin.CHECK_TASK_NAME).dependsOn(aggregate) + get() = getAggregatedTestTask( + name = "allTests", + description = "Runs the tests for all targets and create aggregated report", + reportName = "all" + ).also { + tasks.maybeCreate(LifecycleBasePlugin.CHECK_TASK_NAME) + .dependsOn(it.getTaskOrProvider()) + } - aggregate.description = "Runs the tests for all targets and create aggregated report" +internal fun Project.getAggregatedTestTask(name: String, description: String, reportName: String): TaskHolder { + return locateOrRegisterTask(name) { aggregate -> + aggregate.description = description aggregate.group = JavaBasePlugin.VERIFICATION_GROUP - aggregate.reports.configureConventions(project, "all") + aggregate.reports.configureConventions(project, reportName) aggregate.onlyIf { aggregate.testTasks.size > 1 @@ -31,6 +39,7 @@ private val Project.allTestsTask: TaskHolder aggregate.extensions.extraProperties.set("idea.internal.test", true) } } +} private fun cleanTaskName(taskName: String): String { check(taskName.isNotEmpty()) @@ -45,8 +54,14 @@ private val Project.cleanAllTestTask: Task @Suppress("UnstableApiUsage") internal fun registerTestTask(taskHolder: TaskHolder) { + registerTestTaskInAggregate(taskHolder, taskHolder.project.allTestsTask.doGetTask()) +} + +internal fun registerTestTaskInAggregate( + taskHolder: TaskHolder, + allTests: AggregateTestReport +) { val project = taskHolder.project - val allTests = project.allTestsTask.doGetTask() project.tasks.getByName(LifecycleBasePlugin.CHECK_TASK_NAME).dependsOn(taskHolder.name) project.cleanAllTestTask.dependsOn(cleanTaskName(taskHolder.name)) @@ -63,7 +78,11 @@ internal fun registerTestTask(taskHolder: TaskHolder) { // - enable [checkFailedTests] on [allTestsTask] task.ignoreFailures = true + + @Suppress("UnstableApiUsage") task.reports.html.isEnabled = false + + @Suppress("UnstableApiUsage") task.reports.junitXml.isEnabled = false allTests.checkFailedTests = true