[IDEA] Preload KotlinTest class instead of loop finding

This commit is contained in:
Ilya Goncharov
2020-01-24 11:37:45 +03:00
parent 2c4cfd2fb8
commit c3951d394b
@@ -17,17 +17,11 @@ class KotlinNonJvmGutterConfigurator : AbstractProjectResolverExtension() {
""" """
({ ({
if (GradleVersion.current() >= GradleVersion.version("4.0")) { if (GradleVersion.current() >= GradleVersion.version("4.0")) {
def doIfInstance = { Task task, String fqn, Closure action -> Class kotlinTestClass = null
def taskSuperClass = task.class try {
while (taskSuperClass != Object.class) { kotlinTestClass = Class.forName("org.jetbrains.kotlin.gradle.tasks.KotlinTest")
if (taskSuperClass.canonicalName == fqn) { } catch (ClassNotFoundException ex) {
action() // ignore, class not available
return
} else {
taskSuperClass = taskSuperClass.superclass
}
}
} }
gradle.afterProject { project -> gradle.afterProject { project ->
@@ -43,7 +37,7 @@ class KotlinNonJvmGutterConfigurator : AbstractProjectResolverExtension() {
project.afterEvaluate { project.afterEvaluate {
project.tasks.each { Task task -> project.tasks.each { Task task ->
doIfInstance(task, "org.jetbrains.kotlin.gradle.tasks.KotlinTest") { if (kotlinTestClass != null) {
task.dependsOn('nonJvmTestIdeSupport') task.dependsOn('nonJvmTestIdeSupport')
} }
} }
@@ -51,7 +45,7 @@ class KotlinNonJvmGutterConfigurator : AbstractProjectResolverExtension() {
} }
gradle.taskGraph.beforeTask { Task task -> gradle.taskGraph.beforeTask { Task task ->
doIfInstance(task, "org.jetbrains.kotlin.gradle.tasks.KotlinTest") { if (kotlinTestClass != null) {
task.filter.includePatterns = task.project.tasks['nonJvmTestIdeSupport'].filter.includePatterns task.filter.includePatterns = task.project.tasks['nonJvmTestIdeSupport'].filter.includePatterns
} }
} }