GradleScriptListenerTest: add gradle-wrapper.properties to specify gradle version explicitly

This commit is contained in:
Sergey Rostov
2020-05-07 16:04:49 +03:00
parent 7de0bc9cdc
commit 3e6f827885
@@ -6,12 +6,16 @@
package org.jetbrains.kotlin.idea.scripting.gradle package org.jetbrains.kotlin.idea.scripting.gradle
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil 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.openapi.vfs.VirtualFile
import com.intellij.psi.PsiFile import com.intellij.psi.PsiFile
import org.jetbrains.kotlin.idea.core.script.ScriptConfigurationManager import org.jetbrains.kotlin.idea.core.script.ScriptConfigurationManager
import org.jetbrains.kotlin.idea.script.AbstractScriptConfigurationLoadingTest 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.psi.KtFile
import org.jetbrains.kotlin.test.JUnit3RunnerWithInners 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.settings.GradleProjectSettings
import org.jetbrains.plugins.gradle.util.GradleConstants import org.jetbrains.plugins.gradle.util.GradleConstants
import org.junit.runner.RunWith import org.junit.runner.RunWith
@@ -26,7 +30,12 @@ open class GradleScriptListenerTest : AbstractScriptConfigurationLoadingTest() {
private lateinit var testFiles: TestFiles 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() { override fun setUpTestProject() {
val rootDir = "idea/testData/script/definition/loading/gradle/" 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 settings: KtFile = addFileToProject(rootDir + GradleConstants.KOTLIN_DSL_SETTINGS_FILE_NAME)
val prop: PsiFile = addFileToProject(rootDir + "gradle.properties") 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 } val buildGradleKts = File(rootDir).walkTopDown().find { it.name == GradleConstants.KOTLIN_DSL_SCRIPT_NAME }
?: error("Couldn't find main script") ?: error("Couldn't find main script")
configureScriptFile(rootDir, buildGradleKts) configureScriptFile(rootDir, buildGradleKts)
val build = (myFile as? KtFile) ?: error("") val build = (myFile as? KtFile) ?: error("")
val newProjectSettings = GradleProjectSettings() val newProjectSettings = GradleProjectSettings()
newProjectSettings.distributionType = DistributionType.DEFAULT_WRAPPED
newProjectSettings.externalProjectPath = settings.virtualFile.parent.path newProjectSettings.externalProjectPath = settings.virtualFile.parent.path
ExternalSystemApiUtil.getSettings(project, GradleConstants.SYSTEM_ID).linkProject(newProjectSettings) 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 <reified T : Any> addFileToProject(file: String): T { private inline fun <reified T : Any> addFileToProject(file: String): T {
@@ -183,8 +211,6 @@ open class GradleScriptListenerTest : AbstractScriptConfigurationLoadingTest() {
changeSettingsKtsOutsideSections() changeSettingsKtsOutsideSections()
// project.service<GradleScriptInputsWatcher>().clearAndRefillState()
assertConfigurationUpToDate(testFiles.settings) assertConfigurationUpToDate(testFiles.settings)
assertConfigurationUpdateWasDone(testFiles.buildKts) assertConfigurationUpdateWasDone(testFiles.buildKts)
} }
@@ -218,7 +244,7 @@ open class GradleScriptListenerTest : AbstractScriptConfigurationLoadingTest() {
} }
private fun markFileChanged(virtualFile: VirtualFile, ts: Long) { private fun markFileChanged(virtualFile: VirtualFile, ts: Long) {
// project.service<GradleScriptInputsWatcher>().fileChanged(virtualFile.path, ts) GradleBuildRootsManager.getInstance(project).fileChanged(virtualFile.path, ts)
} }
fun testLoadedConfigurationWhenExternalFileChanged() { fun testLoadedConfigurationWhenExternalFileChanged() {
@@ -230,6 +256,15 @@ open class GradleScriptListenerTest : AbstractScriptConfigurationLoadingTest() {
assertConfigurationUpToDate(testFiles.buildKts) assertConfigurationUpToDate(testFiles.buildKts)
} }
fun testChangeGradleWrapperPropertiesFile() {
assertAndLoadInitialConfiguration(testFiles.buildKts)
markFileChanged(testFiles.gradleWrapperProperties, System.currentTimeMillis())
assertConfigurationUpdateWasDone(testFiles.buildKts)
assertConfigurationUpToDate(testFiles.buildKts)
}
private fun assertConfigurationUpToDate(file: KtFile) { private fun assertConfigurationUpToDate(file: KtFile) {
scriptConfigurationManager.default.ensureUpToDatedConfigurationSuggested(file) scriptConfigurationManager.default.ensureUpToDatedConfigurationSuggested(file)
assertNoBackgroundTasks() assertNoBackgroundTasks()