From 1cc980e21bc8a0118e517d877c95aa2ab0697633 Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Wed, 27 Nov 2019 19:54:06 +0300 Subject: [PATCH] [Gradle, Idea] Create dummy tasks with type Test to WA platform problem Platform set filters only for Test task Create dummy Test task Non JVM test task depends on Test task After evaluate copy filters from Test task to non JVM test task --- .../KotlinNonJvmGutterConfigurator.kt | 36 ++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinNonJvmGutterConfigurator.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinNonJvmGutterConfigurator.kt index a9f909920f4..583e75dae96 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinNonJvmGutterConfigurator.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinNonJvmGutterConfigurator.kt @@ -13,8 +13,42 @@ class KotlinNonJvmGutterConfigurator : AbstractProjectResolverExtension() { initScriptConsumer.consume( //language=Gradle """ - task nonJvmTestIdeSupport(type: Test) { + ({ + def doIfInstance = { Task task, String fqn, Closure action -> + def taskSuperClass = task.class + while (taskSuperClass != Object.class) { + if (taskSuperClass.canonicalName == fqn) { + action() + + return + } else { + taskSuperClass = taskSuperClass.superclass + } + } } + + gradle.afterProject { project -> + project.tasks.create("nonJvmTestIdeSupportDummy") + project.tasks.create('nonJvmTestIdeSupport', Test) { + testClassesDirs = project.tasks["nonJvmTestIdeSupportDummy"].outputs.files + classpath = project.tasks["nonJvmTestIdeSupportDummy"].outputs.files + } + + project.afterEvaluate { + project.tasks.each { Task task -> + doIfInstance(task, "org.jetbrains.kotlin.gradle.tasks.KotlinTest") { + task.dependsOn('nonJvmTestIdeSupport') + } + } + } + } + + gradle.taskGraph.beforeTask { Task task -> + doIfInstance(task, "org.jetbrains.kotlin.gradle.tasks.KotlinTest") { + task.filter.includePatterns = task.project.tasks['nonJvmTestIdeSupport'].filter.includePatterns + } + } + })() """.trimIndent() ) }