ConfigureKotlinTest refactoring to avoid duplicating production logic
This commit is contained in:
@@ -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()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user