diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleImportHelper.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleImportHelper.kt index a5d2b062500..49effe5cd1a 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleImportHelper.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleImportHelper.kt @@ -11,6 +11,7 @@ import com.intellij.diff.util.DiffUtil import com.intellij.openapi.actionSystem.AnAction import com.intellij.openapi.actionSystem.AnActionEvent import com.intellij.openapi.actionSystem.CommonDataKeys +import com.intellij.openapi.components.ServiceManager import com.intellij.openapi.editor.Editor import com.intellij.openapi.externalSystem.importing.ImportSpecBuilder import com.intellij.openapi.externalSystem.util.ExternalSystemUtil @@ -19,6 +20,7 @@ import com.intellij.openapi.project.Project import com.intellij.openapi.util.registry.Registry import com.intellij.openapi.vfs.VirtualFile import com.intellij.testFramework.LightVirtualFileBase +import org.gradle.util.GradleVersion import org.jetbrains.kotlin.idea.KotlinFileType import org.jetbrains.kotlin.idea.KotlinIcons import org.jetbrains.kotlin.idea.KotlinIdeaGradleBundle @@ -28,6 +30,7 @@ import org.jetbrains.kotlin.idea.scripting.gradle.roots.GradleBuildRoot import org.jetbrains.kotlin.idea.scripting.gradle.roots.GradleBuildRootsManager import org.jetbrains.kotlin.scripting.definitions.ScriptDefinitionProvider import org.jetbrains.kotlin.scripting.definitions.findScriptDefinition +import org.jetbrains.plugins.gradle.service.GradleInstallationManager import org.jetbrains.plugins.gradle.service.project.GradlePartialResolverPolicy import org.jetbrains.plugins.gradle.settings.GradleProjectSettings import org.jetbrains.plugins.gradle.util.GradleConstants @@ -131,5 +134,8 @@ class LoadConfigurationAction : AnAction( } fun getGradleVersion(project: Project, settings: GradleProjectSettings): String { - return settings.resolveGradleVersion().version + return GradleInstallationManager.getGradleVersion( + ServiceManager.getService(GradleInstallationManager::class.java) + .getGradleHome(project, settings.externalProjectPath)?.path + ) ?: GradleVersion.current().version } \ No newline at end of file diff --git a/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/scripting/gradle/GradleScriptListenerTest.kt b/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/scripting/gradle/GradleScriptListenerTest.kt index 73e73c37107..47725f324e2 100644 --- a/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/scripting/gradle/GradleScriptListenerTest.kt +++ b/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/scripting/gradle/GradleScriptListenerTest.kt @@ -8,7 +8,6 @@ package org.jetbrains.kotlin.idea.scripting.gradle import com.intellij.openapi.application.impl.LaterInvocator import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil import com.intellij.openapi.vfs.LocalFileSystem -import com.intellij.openapi.vfs.VfsUtil import com.intellij.openapi.vfs.VirtualFile import com.intellij.psi.PsiFile import org.jetbrains.kotlin.idea.core.script.ScriptConfigurationManager @@ -42,21 +41,11 @@ open class GradleScriptListenerTest : AbstractScriptConfigurationLoadingTest() { override fun setUpTestProject() { val rootDir = "idea/testData/script/definition/loading/gradle/" - val settings: KtFile = addFileToProject(rootDir + GradleConstants.KOTLIN_DSL_SETTINGS_FILE_NAME) - val prop: PsiFile = addFileToProject(rootDir + "gradle.properties") + val settings: KtFile = copyFromTestdataToProject(rootDir + GradleConstants.KOTLIN_DSL_SETTINGS_FILE_NAME) + val prop: PsiFile = copyFromTestdataToProject(rootDir + "gradle.properties") - val gradleWrapperProperties = VfsUtil.virtualToIoFile(settings.virtualFile.parent) - .resolve("gradle/wrapper/gradle-wrapper.properties") - gradleWrapperProperties.parentFile.mkdirs() - gradleWrapperProperties.writeText( - """ - distributionBase=GRADLE_USER_HOME - distributionPath=wrapper/dists - distributionUrl=https\://services.gradle.org/distributions/gradle-1.0.0-bin.zip - zipStoreBase=GRADLE_USER_HOME - zipStorePath=wrapper/dists - """.trimIndent() - ) + val gradleCoreJar = createFileInProject("gradle/lib/gradle-core-1.0.0.jar") + val gradleWrapperProperties = createFileInProject("gradle/wrapper/gradle-wrapper.properties") val buildGradleKts = File(rootDir).walkTopDown().find { it.name == GradleConstants.KOTLIN_DSL_SCRIPT_NAME } ?: error("Couldn't find main script") @@ -64,7 +53,8 @@ open class GradleScriptListenerTest : AbstractScriptConfigurationLoadingTest() { val build = (myFile as? KtFile) ?: error("") val newProjectSettings = GradleProjectSettings() - newProjectSettings.distributionType = DistributionType.DEFAULT_WRAPPED + newProjectSettings.gradleHome = gradleCoreJar.parentFile.parent + newProjectSettings.distributionType = DistributionType.LOCAL newProjectSettings.externalProjectPath = settings.virtualFile.parent.path ExternalSystemApiUtil.getSettings(project, GradleConstants.SYSTEM_ID).linkProject(newProjectSettings) @@ -76,11 +66,18 @@ open class GradleScriptListenerTest : AbstractScriptConfigurationLoadingTest() { ) } - private inline fun addFileToProject(file: String): T { + private inline fun 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)