Don't report "can be configured" status if the file is already configured with another Gradle configurator

This commit is contained in:
Dmitry Jemerov
2017-03-10 19:07:17 +01:00
parent 1f96ead801
commit b86fe60a24
2 changed files with 10 additions and 4 deletions
@@ -18,6 +18,7 @@ package org.jetbrains.kotlin.idea.configuration
import com.intellij.codeInsight.CodeInsightUtilCore
import com.intellij.ide.actions.OpenFileAction
import com.intellij.openapi.extensions.Extensions
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
import com.intellij.openapi.module.Module
import com.intellij.openapi.module.ModuleUtil
@@ -65,13 +66,15 @@ abstract class KotlinWithGradleConfigurator : KotlinProjectConfigurator {
val buildFiles = listOf(getBuildGradleFile(module.project, getModuleFilePath(module)),
getBuildGradleFile(module.project, getTopLevelProjectFilePath(module.project)))
.filterNotNull()
if (buildFiles.none(this::isFileConfigured)) {
if (buildFiles.none { buildFile -> allGradleConfigurators.any { it.isFileConfigured(buildFile) } })
return ConfigureKotlinStatus.CAN_BE_CONFIGURED
}
return ConfigureKotlinStatus.BROKEN
}
private val allGradleConfigurators: Collection<KotlinWithGradleConfigurator>
get() = Extensions.getExtensions(KotlinProjectConfigurator.EP_NAME).filterIsInstance<KotlinWithGradleConfigurator>()
protected open fun isApplicable(module: Module): Boolean {
return KotlinPluginUtil.isGradleModule(module) && !KotlinPluginUtil.isAndroidGradleModule(module)
}
@@ -57,10 +57,11 @@ class GradleConfiguratorTest : GradleImportingTestCase() {
myProject.baseDir.createChildData(null, "build.gradle")
val module = ModuleManager.getInstance(myProject).findModuleByName("app")!!
val configurator = findGradleModuleConfigurator()
// We have a Kotlin runtime in build.gradle but not in the classpath, so it doesn't make sense
// to suggest configuring it
assertEquals(ConfigureKotlinStatus.BROKEN, configurator.getStatus(module))
assertEquals(ConfigureKotlinStatus.BROKEN, findGradleModuleConfigurator().getStatus(module))
// Don't offer the JS configurator if the JVM configuration exists but is broken
assertEquals(ConfigureKotlinStatus.BROKEN, findJsGradleModuleConfigurator().getStatus(module))
}
}
}
@@ -114,6 +115,8 @@ class GradleConfiguratorTest : GradleImportingTestCase() {
private fun findGradleModuleConfigurator() = Extensions.findExtension(KotlinProjectConfigurator.EP_NAME,
KotlinGradleModuleConfigurator::class.java)
private fun findJsGradleModuleConfigurator() = Extensions.findExtension(KotlinProjectConfigurator.EP_NAME,
KotlinJsGradleModuleConfigurator::class.java)
@Test
fun testListNonConfiguredModules() {
createProjectSubFile("settings.gradle", "include ':app'")