KotlinDslScriptsModel: import models in case when script contains errors
^KT-37237 Fixed
This commit is contained in:
+10
-1
@@ -13,6 +13,7 @@ import com.intellij.openapi.util.Pair
|
||||
import org.gradle.tooling.model.kotlin.dsl.EditorReportSeverity
|
||||
import org.gradle.tooling.model.kotlin.dsl.KotlinDslModelsParameters.*
|
||||
import org.gradle.tooling.model.kotlin.dsl.KotlinDslScriptsModel
|
||||
import org.jetbrains.kotlin.idea.KotlinIdeaGradleBundle
|
||||
import org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension
|
||||
|
||||
internal val LOG = Logger.getInstance(KotlinDslScriptModelResolverCommon::class.java)
|
||||
@@ -27,7 +28,7 @@ abstract class KotlinDslScriptModelResolverCommon : AbstractProjectResolverExten
|
||||
return listOf(
|
||||
Pair(
|
||||
PROVIDER_MODE_SYSTEM_PROPERTY_NAME,
|
||||
STRICT_CLASSPATH_MODE_SYSTEM_PROPERTY_VALUE
|
||||
CLASSPATH_MODE_SYSTEM_PROPERTY_VALUE
|
||||
)
|
||||
)
|
||||
}
|
||||
@@ -94,6 +95,14 @@ abstract class KotlinDslScriptModelResolverCommon : AbstractProjectResolverExten
|
||||
val models = model.toListOfScriptModels()
|
||||
|
||||
saveScriptModels(resolverCtx, models)
|
||||
|
||||
if (models.containsErrors()) {
|
||||
throw IllegalStateException(KotlinIdeaGradleBundle.message("title.kotlin.build.script"))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun Collection<KotlinDslScriptModel>.containsErrors(): Boolean {
|
||||
return any { it.messages.any { it.severity == KotlinDslScriptModel.Severity.ERROR } }
|
||||
}
|
||||
}
|
||||
+19
-1
@@ -6,6 +6,8 @@
|
||||
package org.jetbrains.kotlin.idea.codeInsight.gradle
|
||||
|
||||
import com.intellij.openapi.vfs.LocalFileSystem
|
||||
import junit.framework.AssertionFailedError
|
||||
import org.jetbrains.kotlin.idea.KotlinIdeaGradleBundle
|
||||
import org.jetbrains.kotlin.idea.core.script.ScriptConfigurationManager
|
||||
import org.jetbrains.kotlin.idea.core.script.applySuggestedScriptConfiguration
|
||||
import org.jetbrains.kotlin.idea.core.script.configuration.cache.ScriptConfigurationCacheScope
|
||||
@@ -48,6 +50,22 @@ class GradleKtsImportTest : GradleImportingTestCase() {
|
||||
checkConfiguration("build.gradle.kts")
|
||||
}
|
||||
|
||||
@Test
|
||||
@TargetVersions("6.0.1+")
|
||||
fun testError() {
|
||||
configureByFiles()
|
||||
|
||||
val result = try {
|
||||
importProject()
|
||||
} catch (e: AssertionFailedError) {
|
||||
e
|
||||
}
|
||||
|
||||
assert(result is AssertionFailedError) { "Exception should be thrown" }
|
||||
assert((result as AssertionFailedError).message?.contains(KotlinIdeaGradleBundle.message("title.kotlin.build.script")) == true)
|
||||
checkConfiguration("build.gradle.kts")
|
||||
}
|
||||
|
||||
@Test
|
||||
@TargetVersions("6.0.1+")
|
||||
fun testCompositeBuild() {
|
||||
@@ -70,7 +88,7 @@ class GradleKtsImportTest : GradleImportingTestCase() {
|
||||
private fun checkConfiguration(vararg files: String) {
|
||||
val scripts = files.map {
|
||||
KtsFixture(it).also { kts ->
|
||||
assertTrue(scriptConfigurationManager.hasConfiguration(kts.psiFile))
|
||||
assertTrue("Configuration for ${kts.file.path} is missing", scriptConfigurationManager.hasConfiguration(kts.psiFile))
|
||||
kts.imported = scriptConfigurationManager.getConfiguration(kts.psiFile)!!
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
unresolved
|
||||
Reference in New Issue
Block a user