Fixed NPE on StandaloneScriptRootsCache instantiation
Relates to ^EA-218043 #KTIJ-1137 Fixed Original commit: 1d63a1b48d480b958ff44676c42b698a8ca5f64a
This commit is contained in:
committed by
Space
parent
45b17120ad
commit
98ba379e07
+3
-1
@@ -16,7 +16,9 @@ class GradleBuildRootIndex(private val project: Project) : StandaloneScriptsUpda
|
||||
private val standaloneScripts: MutableSet<String>
|
||||
get() = StandaloneScriptsStorage.getInstance(project)?.files ?: hashSetOf()
|
||||
|
||||
private val standaloneScriptRoots = mutableMapOf<String, GradleBuildRoot?>().apply {
|
||||
private val standaloneScriptRoots = mutableMapOf<String, GradleBuildRoot?>()
|
||||
|
||||
init {
|
||||
standaloneScripts.forEach(::updateRootsCache)
|
||||
}
|
||||
|
||||
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.idea.scripting.gradle
|
||||
|
||||
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
|
||||
import com.intellij.psi.PsiFile
|
||||
import org.jetbrains.kotlin.idea.script.AbstractScriptConfigurationLoadingTest
|
||||
import org.jetbrains.kotlin.idea.scripting.gradle.roots.GradleBuildRootsManager
|
||||
import org.jetbrains.kotlin.idea.scripting.gradle.settings.StandaloneScriptsStorage
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.plugins.gradle.settings.DistributionType
|
||||
import org.jetbrains.plugins.gradle.settings.GradleProjectSettings
|
||||
import org.jetbrains.plugins.gradle.util.GradleConstants
|
||||
import java.io.File
|
||||
|
||||
class GradleBuildRootIndexTest : AbstractScriptConfigurationLoadingTest() {
|
||||
override fun setUpTestProject() {
|
||||
val rootDir = File("idea/testData/script/definition/loading/gradle/")
|
||||
|
||||
val settings: KtFile = copyFromTestdataToProject(File(rootDir, GradleConstants.KOTLIN_DSL_SETTINGS_FILE_NAME).path)
|
||||
val prop: PsiFile = copyFromTestdataToProject(File(rootDir, "gradle.properties").path)
|
||||
|
||||
val gradleCoreJar = createFileInProject("gradle/lib/gradle-core-1.0.0.jar")
|
||||
val gradleWrapperProperties = createFileInProject("gradle/wrapper/gradle-wrapper.properties")
|
||||
|
||||
val buildGradleKts = rootDir.walkTopDown().find { it.name == GradleConstants.KOTLIN_DSL_SCRIPT_NAME }
|
||||
?: error("Couldn't find main script")
|
||||
configureScriptFile(rootDir.path, buildGradleKts)
|
||||
val build = (myFile as? KtFile) ?: error("")
|
||||
|
||||
val newProjectSettings = GradleProjectSettings()
|
||||
newProjectSettings.gradleHome = gradleCoreJar.parentFile.parent
|
||||
newProjectSettings.distributionType = DistributionType.LOCAL
|
||||
newProjectSettings.externalProjectPath = settings.virtualFile.parent.path
|
||||
|
||||
StandaloneScriptsStorage.getInstance(project)!!.files.add("standalone.kts")
|
||||
|
||||
ExternalSystemApiUtil.getSettings(project, GradleConstants.SYSTEM_ID).linkProject(newProjectSettings)
|
||||
}
|
||||
|
||||
fun `test standalone scripts on start`() {
|
||||
assertNotNull(GradleBuildRootsManager.getInstance(project))
|
||||
}
|
||||
}
|
||||
-12
@@ -66,18 +66,6 @@ open class GradleScriptListenerTest : AbstractScriptConfigurationLoadingTest() {
|
||||
)
|
||||
}
|
||||
|
||||
private inline fun <reified T : Any> copyFromTestdataToProject(file: String): T {
|
||||
createFileAndSyncDependencies(File(file))
|
||||
return (myFile as? T) ?: error("Couldn't configure project by $file")
|
||||
}
|
||||
|
||||
private fun createFileInProject(path: String): File {
|
||||
val file = File(project.basePath, path)
|
||||
file.parentFile.mkdirs()
|
||||
file.createNewFile()
|
||||
return file
|
||||
}
|
||||
|
||||
fun testSectionChange() {
|
||||
assertAndLoadInitialConfiguration(testFiles.buildKts)
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.idea.core.script.configuration.testingBackgroundExec
|
||||
import org.jetbrains.kotlin.idea.core.script.configuration.utils.testScriptConfigurationNotification
|
||||
import org.jetbrains.kotlin.idea.util.application.runWriteAction
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import java.io.File
|
||||
|
||||
abstract class AbstractScriptConfigurationLoadingTest : AbstractScriptConfigurationTest() {
|
||||
lateinit var scriptConfigurationManager: CompositeScriptConfigurationManager
|
||||
@@ -68,6 +69,18 @@ abstract class AbstractScriptConfigurationLoadingTest : AbstractScriptConfigurat
|
||||
// do nothings
|
||||
}
|
||||
|
||||
protected inline fun <reified T : Any> copyFromTestdataToProject(file: String): T {
|
||||
createFileAndSyncDependencies(File(file))
|
||||
return (myFile as? T) ?: error("Couldn't configure project by $file")
|
||||
}
|
||||
|
||||
protected fun createFileInProject(path: String): File {
|
||||
val file = File(project.basePath, path)
|
||||
file.parentFile.mkdirs()
|
||||
file.createNewFile()
|
||||
return file
|
||||
}
|
||||
|
||||
protected fun assertAndDoAllBackgroundTasks() {
|
||||
assertDoAllBackgroundTaskAndDoWhileLoading { }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user