ConfigureKotlinTest refactoring to avoid duplicating production logic

This commit is contained in:
Dmitry Jemerov
2017-07-21 18:43:14 +02:00
parent 63c6ba7e31
commit 861219f502
2 changed files with 23 additions and 18 deletions
@@ -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)
}
@@ -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()
}