Gradle, js: aggregate jsTest task should work the same way as all tests aggregator
E.g: individual test tasks should not fail build, aggregate reports should be created. Also this task should not be included in check (as all tests should be already executed from the all tests aggregated task).
This commit is contained in:
+7
-1
@@ -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<NpmResolveTask>("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)
|
||||
|
||||
-12
@@ -33,18 +33,6 @@ open class KotlinJsTargetConfigurator(kotlinPluginVersion: String) :
|
||||
|
||||
override fun configureTest(target: KotlinOnlyTarget<KotlinJsCompilation>) {
|
||||
// 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<*> {
|
||||
|
||||
+2
-2
@@ -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 {
|
||||
|
||||
+24
-5
@@ -15,13 +15,21 @@ import org.jetbrains.kotlin.gradle.tasks.AggregateTestReport
|
||||
import org.jetbrains.kotlin.gradle.tasks.locateOrRegisterTask
|
||||
|
||||
private val Project.allTestsTask: TaskHolder<AggregateTestReport>
|
||||
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<AggregateTestReport> {
|
||||
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<AggregateTestReport>
|
||||
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<AbstractTestTask>) {
|
||||
registerTestTaskInAggregate(taskHolder, taskHolder.project.allTestsTask.doGetTask())
|
||||
}
|
||||
|
||||
internal fun registerTestTaskInAggregate(
|
||||
taskHolder: TaskHolder<AbstractTestTask>,
|
||||
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<AbstractTestTask>) {
|
||||
// - enable [checkFailedTests] on [allTestsTask]
|
||||
|
||||
task.ignoreFailures = true
|
||||
|
||||
@Suppress("UnstableApiUsage")
|
||||
task.reports.html.isEnabled = false
|
||||
|
||||
@Suppress("UnstableApiUsage")
|
||||
task.reports.junitXml.isEnabled = false
|
||||
|
||||
allTests.checkFailedTests = true
|
||||
|
||||
Reference in New Issue
Block a user