[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
This commit is contained in:
Ilya Goncharov
2019-11-27 19:54:06 +03:00
parent 86e665e2b3
commit 1cc980e21b
@@ -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()
)
}