[IDEA] Add check on gradle version not to broke Gradle older 4.0

This commit is contained in:
Ilya Goncharov
2020-01-23 15:53:34 +03:00
parent 20ac606df4
commit 2c4cfd2fb8
@@ -16,42 +16,44 @@ class KotlinNonJvmGutterConfigurator : AbstractProjectResolverExtension() {
//language=Gradle //language=Gradle
""" """
({ ({
def doIfInstance = { Task task, String fqn, Closure action -> if (GradleVersion.current() >= GradleVersion.version("4.0")) {
def taskSuperClass = task.class def doIfInstance = { Task task, String fqn, Closure action ->
while (taskSuperClass != Object.class) { def taskSuperClass = task.class
if (taskSuperClass.canonicalName == fqn) { while (taskSuperClass != Object.class) {
action() if (taskSuperClass.canonicalName == fqn) {
action()
return
} else { return
taskSuperClass = taskSuperClass.superclass } else {
} taskSuperClass = taskSuperClass.superclass
}
}
gradle.afterProject { project ->
// Test task should have some parameters
// Create dummy task to consume outputs by Test task
project.tasks.create("nonJvmTestIdeSupportDummy")
// IDEA now process filter parameters only for Test tasks
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.afterProject { project ->
gradle.taskGraph.beforeTask { Task task -> // Test task should have some parameters
doIfInstance(task, "org.jetbrains.kotlin.gradle.tasks.KotlinTest") { // Create dummy task to consume outputs by Test task
task.filter.includePatterns = task.project.tasks['nonJvmTestIdeSupport'].filter.includePatterns project.tasks.create("nonJvmTestIdeSupportDummy")
// IDEA now process filter parameters only for Test tasks
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
}
} }
} }
})() })()