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 35881d1476e..d6d9f15b050 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 @@ -6,12 +6,16 @@ package org.jetbrains.kotlin.idea.scripting.gradle 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 import org.jetbrains.kotlin.idea.script.AbstractScriptConfigurationLoadingTest +import org.jetbrains.kotlin.idea.scripting.gradle.roots.GradleBuildRootsManager import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.test.JUnit3RunnerWithInners +import org.jetbrains.plugins.gradle.settings.DistributionType import org.jetbrains.plugins.gradle.settings.GradleProjectSettings import org.jetbrains.plugins.gradle.util.GradleConstants import org.junit.runner.RunWith @@ -26,7 +30,12 @@ open class GradleScriptListenerTest : AbstractScriptConfigurationLoadingTest() { private lateinit var testFiles: TestFiles - data class TestFiles(val buildKts: KtFile, val settings: KtFile, val prop: PsiFile) + data class TestFiles( + val buildKts: KtFile, + val settings: KtFile, + val prop: PsiFile, + val gradleWrapperProperties: VirtualFile + ) override fun setUpTestProject() { val rootDir = "idea/testData/script/definition/loading/gradle/" @@ -34,16 +43,35 @@ open class GradleScriptListenerTest : AbstractScriptConfigurationLoadingTest() { val settings: KtFile = addFileToProject(rootDir + GradleConstants.KOTLIN_DSL_SETTINGS_FILE_NAME) val prop: PsiFile = addFileToProject(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 buildGradleKts = File(rootDir).walkTopDown().find { it.name == GradleConstants.KOTLIN_DSL_SCRIPT_NAME } ?: error("Couldn't find main script") configureScriptFile(rootDir, buildGradleKts) val build = (myFile as? KtFile) ?: error("") val newProjectSettings = GradleProjectSettings() + newProjectSettings.distributionType = DistributionType.DEFAULT_WRAPPED newProjectSettings.externalProjectPath = settings.virtualFile.parent.path ExternalSystemApiUtil.getSettings(project, GradleConstants.SYSTEM_ID).linkProject(newProjectSettings) - testFiles = TestFiles(build, settings, prop) + testFiles = TestFiles( + build, + settings, + prop, + LocalFileSystem.getInstance().findFileByIoFile(gradleWrapperProperties)!! + ) } private inline fun addFileToProject(file: String): T { @@ -183,8 +211,6 @@ open class GradleScriptListenerTest : AbstractScriptConfigurationLoadingTest() { changeSettingsKtsOutsideSections() -// project.service().clearAndRefillState() - assertConfigurationUpToDate(testFiles.settings) assertConfigurationUpdateWasDone(testFiles.buildKts) } @@ -218,7 +244,7 @@ open class GradleScriptListenerTest : AbstractScriptConfigurationLoadingTest() { } private fun markFileChanged(virtualFile: VirtualFile, ts: Long) { -// project.service().fileChanged(virtualFile.path, ts) + GradleBuildRootsManager.getInstance(project).fileChanged(virtualFile.path, ts) } fun testLoadedConfigurationWhenExternalFileChanged() { @@ -230,6 +256,15 @@ open class GradleScriptListenerTest : AbstractScriptConfigurationLoadingTest() { assertConfigurationUpToDate(testFiles.buildKts) } + fun testChangeGradleWrapperPropertiesFile() { + assertAndLoadInitialConfiguration(testFiles.buildKts) + + markFileChanged(testFiles.gradleWrapperProperties, System.currentTimeMillis()) + + assertConfigurationUpdateWasDone(testFiles.buildKts) + assertConfigurationUpToDate(testFiles.buildKts) + } + private fun assertConfigurationUpToDate(file: KtFile) { scriptConfigurationManager.default.ensureUpToDatedConfigurationSuggested(file) assertNoBackgroundTasks()