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.EditorReportSeverity
|
||||||
import org.gradle.tooling.model.kotlin.dsl.KotlinDslModelsParameters.*
|
import org.gradle.tooling.model.kotlin.dsl.KotlinDslModelsParameters.*
|
||||||
import org.gradle.tooling.model.kotlin.dsl.KotlinDslScriptsModel
|
import org.gradle.tooling.model.kotlin.dsl.KotlinDslScriptsModel
|
||||||
|
import org.jetbrains.kotlin.idea.KotlinIdeaGradleBundle
|
||||||
import org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension
|
import org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension
|
||||||
|
|
||||||
internal val LOG = Logger.getInstance(KotlinDslScriptModelResolverCommon::class.java)
|
internal val LOG = Logger.getInstance(KotlinDslScriptModelResolverCommon::class.java)
|
||||||
@@ -27,7 +28,7 @@ abstract class KotlinDslScriptModelResolverCommon : AbstractProjectResolverExten
|
|||||||
return listOf(
|
return listOf(
|
||||||
Pair(
|
Pair(
|
||||||
PROVIDER_MODE_SYSTEM_PROPERTY_NAME,
|
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()
|
val models = model.toListOfScriptModels()
|
||||||
|
|
||||||
saveScriptModels(resolverCtx, models)
|
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
|
package org.jetbrains.kotlin.idea.codeInsight.gradle
|
||||||
|
|
||||||
import com.intellij.openapi.vfs.LocalFileSystem
|
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.ScriptConfigurationManager
|
||||||
import org.jetbrains.kotlin.idea.core.script.applySuggestedScriptConfiguration
|
import org.jetbrains.kotlin.idea.core.script.applySuggestedScriptConfiguration
|
||||||
import org.jetbrains.kotlin.idea.core.script.configuration.cache.ScriptConfigurationCacheScope
|
import org.jetbrains.kotlin.idea.core.script.configuration.cache.ScriptConfigurationCacheScope
|
||||||
@@ -48,6 +50,22 @@ class GradleKtsImportTest : GradleImportingTestCase() {
|
|||||||
checkConfiguration("build.gradle.kts")
|
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
|
@Test
|
||||||
@TargetVersions("6.0.1+")
|
@TargetVersions("6.0.1+")
|
||||||
fun testCompositeBuild() {
|
fun testCompositeBuild() {
|
||||||
@@ -70,7 +88,7 @@ class GradleKtsImportTest : GradleImportingTestCase() {
|
|||||||
private fun checkConfiguration(vararg files: String) {
|
private fun checkConfiguration(vararg files: String) {
|
||||||
val scripts = files.map {
|
val scripts = files.map {
|
||||||
KtsFixture(it).also { kts ->
|
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)!!
|
kts.imported = scriptConfigurationManager.getConfiguration(kts.psiFile)!!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
unresolved
|
||||||
Reference in New Issue
Block a user