From f395f163f80d873239a4795a378f32442d6b1cc1 Mon Sep 17 00:00:00 2001 From: Natalia Selezneva Date: Fri, 10 Aug 2018 14:07:07 +0300 Subject: [PATCH] GradleImportingTestCase: add infrastructure to use files from testData folder --- .../gradle/GradleImportingTestCase.kt | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleImportingTestCase.kt b/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleImportingTestCase.kt index 5c30ffb31b8..81690c88732 100644 --- a/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleImportingTestCase.kt +++ b/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleImportingTestCase.kt @@ -32,6 +32,7 @@ import com.intellij.openapi.ui.Messages import com.intellij.openapi.ui.TestDialog import com.intellij.openapi.util.io.FileUtil import com.intellij.openapi.vfs.LocalFileSystem +import com.intellij.openapi.vfs.VirtualFile import com.intellij.testFramework.IdeaTestUtil import com.intellij.util.PathUtil import com.intellij.util.containers.ContainerUtil @@ -40,6 +41,7 @@ import org.gradle.util.GradleVersion import org.gradle.wrapper.GradleWrapperMain import org.intellij.lang.annotations.Language import org.jetbrains.annotations.NonNls +import org.jetbrains.kotlin.idea.test.PluginTestCaseBase import org.jetbrains.plugins.gradle.settings.DistributionType import org.jetbrains.plugins.gradle.settings.GradleProjectSettings import org.jetbrains.plugins.gradle.settings.GradleSettings @@ -191,6 +193,28 @@ abstract class GradleImportingTestCase : ExternalSystemImportingTestCase() { createProjectSubFile("gradle/wrapper/gradle-wrapper.properties", writer.toString()) } + protected open fun testDataDirName(): String = "" + + protected fun testDataDirectory(): File { + val baseDir = "${PluginTestCaseBase.getTestDataPathBase()}/gradle/${testDataDirName()}/" + return File(baseDir, getTestName(true).substringBefore("_")) + } + + protected fun configureByFiles(): List { + val rootDir = testDataDirectory() + assert(rootDir.exists()) { "Directory ${rootDir.path} doesn't exist" } + + return rootDir.walk().mapNotNull { + when { + it.isDirectory -> null + !it.name.endsWith(SUFFIX) -> { + createProjectSubFile(it.path.substringAfter(rootDir.path + File.separator), it.readText()) + } + else -> null + } + }.toList() + } + private fun runWrite(f: () -> Unit) { object : WriteAction() { override fun run(result: Result) { @@ -203,6 +227,9 @@ abstract class GradleImportingTestCase : ExternalSystemImportingTestCase() { private const val GRADLE_JDK_NAME = "Gradle JDK" private const val GRADLE_DAEMON_TTL_MS = 10000 + @JvmStatic + protected val SUFFIX = ".after" + @JvmStatic @Parameterized.Parameters(name = "{index}: with Gradle-{0}") fun data(): Collection> {