gradle.kts: add tests for importing scripts configuration
This commit is contained in:
+1
-1
@@ -49,7 +49,7 @@ import static org.junit.Assume.assumeThat;
|
||||
@RunWith(value = Parameterized.class)
|
||||
public abstract class AbstractModelBuilderTest {
|
||||
|
||||
public static final Object[][] SUPPORTED_GRADLE_VERSIONS = {{"4.9"}, {"5.6.4"}};
|
||||
public static final Object[][] SUPPORTED_GRADLE_VERSIONS = {{"4.9"}, {"5.6.4"}, {"6.0.1"}};
|
||||
|
||||
private static final Pattern TEST_METHOD_NAME_PATTERN = Pattern.compile("(.*)\\[(\\d*: with Gradle-.*)\\]");
|
||||
|
||||
|
||||
+1
-1
@@ -61,7 +61,7 @@ import static org.junit.Assume.assumeThat;
|
||||
@RunWith(value = Parameterized.class)
|
||||
public abstract class AbstractModelBuilderTest {
|
||||
|
||||
public static final Object[][] SUPPORTED_GRADLE_VERSIONS = {{"4.9"}, {"5.6.4"}};
|
||||
public static final Object[][] SUPPORTED_GRADLE_VERSIONS = {{"4.9"}, {"5.6.4"}, {"6.0.1"}};
|
||||
|
||||
private static final Pattern TEST_METHOD_NAME_PATTERN = Pattern.compile("(.*)\\[(\\d*: with Gradle-.*)\\]");
|
||||
|
||||
|
||||
+84
@@ -0,0 +1,84 @@
|
||||
/*
|
||||
* Copyright 2010-2019 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.codeInsight.gradle
|
||||
|
||||
import com.intellij.openapi.vfs.LocalFileSystem
|
||||
import org.jetbrains.kotlin.idea.completion.test.KotlinCompletionTestCase
|
||||
import org.jetbrains.kotlin.idea.core.script.ScriptConfigurationManager
|
||||
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.utils.areSimilar
|
||||
import org.jetbrains.kotlin.idea.core.script.configuration.utils.getKtFile
|
||||
import org.jetbrains.kotlin.idea.core.script.hasSuggestedScriptConfiguration
|
||||
import org.jetbrains.kotlin.scripting.resolve.ScriptCompilationConfigurationWrapper
|
||||
import org.jetbrains.plugins.gradle.settings.GradleSettings
|
||||
import org.jetbrains.plugins.gradle.tooling.annotation.TargetVersions
|
||||
import org.junit.Test
|
||||
import java.io.File
|
||||
|
||||
|
||||
class GradleKtsImportTest : GradleImportingTestCase() {
|
||||
val scriptConfigurationManager get() = ScriptConfigurationManager.getInstance(myProject)
|
||||
val projectDir get() = File(GradleSettings.getInstance(myProject).linkedProjectsSettings.first().externalProjectPath)
|
||||
|
||||
override fun testDataDirName(): String {
|
||||
return "gradleKtsImportTest"
|
||||
}
|
||||
|
||||
@Test
|
||||
@TargetVersions("6.0.1+")
|
||||
fun testEmpty() {
|
||||
configureByFiles()
|
||||
importProject()
|
||||
|
||||
checkConfiguration("build.gradle.kts")
|
||||
}
|
||||
|
||||
private fun checkConfiguration(vararg files: String) {
|
||||
val scripts = files.map {
|
||||
KtsFixture(it).also { kts ->
|
||||
assertTrue(scriptConfigurationManager.hasConfiguration(kts.psiFile))
|
||||
kts.imported = scriptConfigurationManager.getConfiguration(kts.psiFile)!!
|
||||
}
|
||||
}
|
||||
|
||||
// reload configuration and check this it is not changed
|
||||
scripts.forEach {
|
||||
scriptConfigurationManager.updater.postponeConfigurationReload(ScriptConfigurationCacheScope.File(it.psiFile))
|
||||
val reloadedConfiguration = scriptConfigurationManager.getConfiguration(it.psiFile)!!
|
||||
assertTrue(areSimilar(it.imported, reloadedConfiguration))
|
||||
it.assertNoSuggestedConfiguration()
|
||||
}
|
||||
|
||||
// clear memory cache and check everything loaded from FS
|
||||
ScriptConfigurationManager.clearCaches(myProject)
|
||||
scripts.forEach {
|
||||
val fromFs = scriptConfigurationManager.getConfiguration(it.psiFile)!!
|
||||
assertTrue(areSimilar(it.imported, fromFs))
|
||||
}
|
||||
}
|
||||
|
||||
inner class KtsFixture(val fileName: String) {
|
||||
val file = projectDir.resolve(fileName)
|
||||
|
||||
val virtualFile get() = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(file)!!
|
||||
val psiFile get() = myProject.getKtFile(virtualFile)!!
|
||||
|
||||
lateinit var imported: ScriptCompilationConfigurationWrapper
|
||||
|
||||
fun assertSuggestedConfiguration() {
|
||||
assertTrue(virtualFile.hasSuggestedScriptConfiguration(myProject))
|
||||
}
|
||||
|
||||
fun assertAndApplySuggestedConfiguration() {
|
||||
assertTrue(virtualFile.applySuggestedScriptConfiguration(myProject))
|
||||
}
|
||||
|
||||
fun assertNoSuggestedConfiguration() {
|
||||
assertFalse(virtualFile.applySuggestedScriptConfiguration(myProject))
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
// project without sources sets to check that import also works
|
||||
Reference in New Issue
Block a user