From a59daafbb43227910c8398ffd99374d2b26c146a Mon Sep 17 00:00:00 2001 From: Dmitry Savvinov Date: Fri, 26 Apr 2019 15:51:26 +0300 Subject: [PATCH] [Testing] Add more flexiblity to AbstractMultiModuleTest - Preserve root names - Provide an ability to transform copied file - Allow passing several implemented modules in AbstractMultiModuleTest --- .../idea/stubs/AbstractMultiModuleTest.kt | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/idea/tests/org/jetbrains/kotlin/idea/stubs/AbstractMultiModuleTest.kt b/idea/tests/org/jetbrains/kotlin/idea/stubs/AbstractMultiModuleTest.kt index d9ea51267b2..a2f69b60153 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/stubs/AbstractMultiModuleTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/stubs/AbstractMultiModuleTest.kt @@ -71,9 +71,18 @@ abstract class AbstractMultiModuleTest : DaemonAnalyzerTestCase() { return super.createModule(path, moduleType) } - fun addRoot(module: Module, sourceDirInTestData: File, isTestRoot: Boolean) { - val tmpRootDir = createTempDirectory() + fun addRoot(module: Module, sourceDirInTestData: File, isTestRoot: Boolean, transformContainedFiles: ((File) -> Unit)? = null) { + val tmpDir = createTempDirectory() + + // Preserve original root name. This might be useful for later matching of copied files to original ones + val tmpRootDir = File(tmpDir, sourceDirInTestData.name).also { it.mkdir() } + FileUtil.copyDir(sourceDirInTestData, tmpRootDir) + + if (transformContainedFiles != null) { + tmpRootDir.listFiles().forEach(transformContainedFiles) + } + val virtualTempDir = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(tmpRootDir)!! object : WriteCommandAction.Simple(project) { override fun run() { @@ -133,7 +142,7 @@ abstract class AbstractMultiModuleTest : DaemonAnalyzerTestCase() { fun Module.createFacet( platformKind: TargetPlatform? = null, useProjectSettings: Boolean = true, - implementedModuleName: String? = null + implementedModuleNames: List? = null ) { WriteAction.run { val modelsProvider = IdeModifiableModelsProviderImpl(project) @@ -143,8 +152,8 @@ fun Module.createFacet( modelsProvider.getModifiableRootModel(this@createFacet), platformKind ) - if (implementedModuleName != null) { - this.implementedModuleNames = listOf(implementedModuleName) + if (implementedModuleNames != null) { + this.implementedModuleNames = implementedModuleNames } } modelsProvider.commit()