From 861219f5024937fc9f11984f4addd456d6852b80 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Fri, 21 Jul 2017 18:43:14 +0200 Subject: [PATCH] ConfigureKotlinTest refactoring to avoid duplicating production logic --- .../KotlinWithLibraryConfigurator.kt | 25 ++++++++++++++++--- .../AbstractConfigureKotlinTest.kt | 16 ++---------- 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinWithLibraryConfigurator.kt b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinWithLibraryConfigurator.kt index b1308156d5b..be5205872d2 100644 --- a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinWithLibraryConfigurator.kt +++ b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinWithLibraryConfigurator.kt @@ -121,6 +121,19 @@ abstract class KotlinWithLibraryConfigurator internal constructor() : KotlinProj defaultPath: String, pathFromDialog: String?, collector: NotificationMessageCollector + ) { + val classesPath = getPathToCopyFileTo(module.project, OrderRootType.CLASSES, defaultPath, pathFromDialog) + val sourcesPath = getPathToCopyFileTo(module.project, OrderRootType.SOURCES, defaultPath, pathFromDialog) + configureModuleWithLibrary(module, classesPath, sourcesPath, collector, useBundled = pathFromDialog == null) + } + + fun configureModuleWithLibrary( + module: Module, + classesPath: String, + sourcesPath: String, + collector: NotificationMessageCollector, + forceJarState: FileState? = null, + useBundled: Boolean = false ) { val project = module.project @@ -132,10 +145,14 @@ abstract class KotlinWithLibraryConfigurator internal constructor() : KotlinProj val model = library.modifiableModel for (descriptor in getLibraryJarDescriptors(sdk)) { - val dirToCopyJar = getPathToCopyFileTo(project, descriptor.orderRootType, defaultPath, pathFromDialog) - val runtimeState = getJarState(project, - File(dirToCopyJar, descriptor.jarName), - descriptor.orderRootType, pathFromDialog == null) + val dirToCopyJar = if (descriptor.orderRootType == OrderRootType.SOURCES) + sourcesPath + else + classesPath + + val runtimeState = forceJarState ?: getJarState(project, + File(dirToCopyJar, descriptor.jarName), + descriptor.orderRootType, useBundled) configureLibraryJar(model, runtimeState, dirToCopyJar, descriptor, collector) } diff --git a/idea/tests/org/jetbrains/kotlin/idea/configuration/AbstractConfigureKotlinTest.kt b/idea/tests/org/jetbrains/kotlin/idea/configuration/AbstractConfigureKotlinTest.kt index 714433736fa..d77cb6c15f6 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/configuration/AbstractConfigureKotlinTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/configuration/AbstractConfigureKotlinTest.kt @@ -16,12 +16,10 @@ package org.jetbrains.kotlin.idea.configuration -import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.application.PathMacros import com.intellij.openapi.module.Module import com.intellij.openapi.module.ModuleManager import com.intellij.openapi.project.Project -import com.intellij.openapi.roots.ModuleRootManager import com.intellij.openapi.util.io.FileUtil import com.intellij.openapi.util.io.FileUtilRt import com.intellij.testFramework.PlatformTestCase @@ -148,19 +146,9 @@ abstract class AbstractConfigureKotlinTest : PlatformTestCase() { val project = modules.iterator().next().project val collector = createConfigureKotlinNotificationCollector(project) + val pathToJar = getPathToJar(runtimeState, jarFromDist, jarFromTemp) for (module in modules) { - var library = configurator.getKotlinLibrary(module) - if (library == null) { - library = configurator.createNewLibrary(project, collector) - } - val pathToJar = getPathToJar(runtimeState, jarFromDist, jarFromTemp) - val sdk = ModuleRootManager.getInstance(module).sdk - val model = library.modifiableModel - for (descriptor in configurator.getLibraryJarDescriptors(sdk)) { - configurator.configureLibraryJar(model, runtimeState, pathToJar, descriptor, collector) - } - ApplicationManager.getApplication().runWriteAction { model.commit() } - configurator.addLibraryToModuleIfNeeded(module, library, collector) + configurator.configureModuleWithLibrary(module, pathToJar, pathToJar, collector, runtimeState) } collector.showNotification() }