From fa907c7906d68af0dc0d803dc5dbc247bd60714c Mon Sep 17 00:00:00 2001 From: "Sergey.Shanshin" Date: Thu, 20 Jan 2022 14:22:35 +0300 Subject: [PATCH] Removed checking of parent projects for re-apply of the plugin Checking parent projects causes a deadlock when projects are deeply nested. Fixes #116 --- src/main/kotlin/kotlinx/kover/KoverPlugin.kt | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/src/main/kotlin/kotlinx/kover/KoverPlugin.kt b/src/main/kotlin/kotlinx/kover/KoverPlugin.kt index e2f1895f..a55c784c 100644 --- a/src/main/kotlin/kotlinx/kover/KoverPlugin.kt +++ b/src/main/kotlin/kotlinx/kover/KoverPlugin.kt @@ -39,8 +39,6 @@ class KoverPlugin : Plugin { private val defaultJacocoVersion = "0.8.7" override fun apply(target: Project) { - target.checkAlreadyApplied() - val koverExtension = target.createKoverExtension() val agents = AgentsFactory.createAgents(target, koverExtension) @@ -210,6 +208,10 @@ class KoverPlugin : Plugin { projectProviders: ProjectProviders, block: (T) -> Unit ): T { + tasks.findByName(taskName)?.let { + throw GradleException("Kover task '$taskName' already exist. Plugin should not be applied in child project if it has already been applied in one of the parent projects.") + } + return tasks.create(taskName, type.java) { task -> task.group = VERIFICATION_GROUP @@ -265,17 +267,6 @@ class KoverPlugin : Plugin { doLast(IntellijErrorLogChecker(taskExtension)) } - - private fun Project.checkAlreadyApplied() { - var parent = parent - - while (parent != null) { - if (parent.plugins.hasPlugin(KoverPlugin::class.java)) { - throw GradleException("Kover plugin is applied in both parent project '${parent.name}' and child project '${this.name}'. Kover plugin should be applied only in parent project.") - } - parent = this.parent - } - } } private class IntellijErrorLogChecker(private val taskExtension: KoverTaskExtension) : Action {