Specify library kind when configuring library in tests
This commit is contained in:
@@ -25,9 +25,10 @@ import com.intellij.openapi.roots.ModuleRootManager
|
||||
import com.intellij.openapi.roots.OrderRootType
|
||||
import com.intellij.openapi.roots.impl.libraries.LibraryEx
|
||||
import com.intellij.openapi.roots.libraries.Library
|
||||
import com.intellij.openapi.roots.libraries.PersistentLibraryKind
|
||||
import com.intellij.openapi.roots.ui.configuration.libraryEditor.NewLibraryEditor
|
||||
import com.intellij.openapi.util.Computable
|
||||
import com.intellij.openapi.vfs.VfsUtil
|
||||
import org.jetbrains.kotlin.idea.framework.JSLibraryKind
|
||||
import org.jetbrains.kotlin.idea.util.application.runWriteAction
|
||||
import org.jetbrains.kotlin.test.InTextDirectivesUtils
|
||||
import org.jetbrains.kotlin.utils.PathUtil
|
||||
@@ -58,7 +59,8 @@ object ConfigLibraryUtil {
|
||||
fun configureKotlinJsRuntimeAndSdk(module: Module, sdk: Sdk) {
|
||||
configureSdk(module, sdk)
|
||||
addLibrary(getKotlinRuntimeLibEditor(DEFAULT_KOTLIN_JS_STDLIB_NAME,
|
||||
PathUtil.getKotlinPathsForDistDirectory().jsStdLibJarPath), module)
|
||||
PathUtil.getKotlinPathsForDistDirectory().jsStdLibJarPath), module,
|
||||
JSLibraryKind)
|
||||
}
|
||||
|
||||
fun configureKotlinRuntime(module: Module) {
|
||||
@@ -93,26 +95,27 @@ object ConfigLibraryUtil {
|
||||
}
|
||||
}
|
||||
|
||||
fun addLibrary(editor: NewLibraryEditor, module: Module): Library {
|
||||
return ApplicationManager.getApplication().runWriteAction(Computable {
|
||||
fun addLibrary(editor: NewLibraryEditor, module: Module, kind: PersistentLibraryKind<*>? = null): Library =
|
||||
runWriteAction {
|
||||
val rootManager = ModuleRootManager.getInstance(module)
|
||||
val model = rootManager.modifiableModel
|
||||
|
||||
val library = addLibrary(editor, model)
|
||||
val library = addLibrary(editor, model, kind)
|
||||
|
||||
model.commit()
|
||||
|
||||
library
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
fun addLibrary(editor: NewLibraryEditor, model: ModifiableRootModel): Library {
|
||||
val library = model.moduleLibraryTable.createLibrary(editor.name)
|
||||
fun addLibrary(editor: NewLibraryEditor, model: ModifiableRootModel, kind: PersistentLibraryKind<*>? = null): Library {
|
||||
val libraryTableModifiableModel = model.moduleLibraryTable.modifiableModel
|
||||
val library = libraryTableModifiableModel.createLibrary(editor.name, kind)
|
||||
|
||||
val libModel = library.modifiableModel
|
||||
editor.applyTo(libModel as LibraryEx.ModifiableModelEx)
|
||||
|
||||
libModel.commit()
|
||||
libraryTableModifiableModel.commit()
|
||||
|
||||
return library
|
||||
}
|
||||
|
||||
+2
-1
@@ -22,6 +22,7 @@ import com.intellij.openapi.module.StdModuleTypes
|
||||
import com.intellij.openapi.projectRoots.Sdk
|
||||
import com.intellij.openapi.roots.ModifiableRootModel
|
||||
import com.intellij.openapi.roots.ui.configuration.libraryEditor.NewLibraryEditor
|
||||
import org.jetbrains.kotlin.idea.framework.JSLibraryKind
|
||||
import org.jetbrains.kotlin.idea.framework.JSLibraryStdDescription
|
||||
|
||||
object KotlinStdJSProjectDescriptor : KotlinLightProjectDescriptor() {
|
||||
@@ -34,6 +35,6 @@ object KotlinStdJSProjectDescriptor : KotlinLightProjectDescriptor() {
|
||||
val editor = NewLibraryEditor(configuration.libraryType, configuration.properties)
|
||||
configuration.addRoots(editor)
|
||||
|
||||
ConfigLibraryUtil.addLibrary(editor, model)
|
||||
ConfigLibraryUtil.addLibrary(editor, model, JSLibraryKind)
|
||||
}
|
||||
}
|
||||
+2
-1
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.idea.caches.resolve
|
||||
import com.intellij.openapi.module.Module
|
||||
import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime
|
||||
import org.jetbrains.kotlin.config.TargetPlatformKind
|
||||
import org.jetbrains.kotlin.idea.framework.CommonLibraryKind
|
||||
import org.jetbrains.kotlin.idea.stubs.AbstractMultiHighlightingTest
|
||||
import org.jetbrains.kotlin.test.TestJdkKind
|
||||
|
||||
@@ -41,7 +42,7 @@ abstract class AbstractMultiModuleHighlightingTest : AbstractMultiHighlightingTe
|
||||
val commonModule = module("common", jdk)
|
||||
commonModule.createFacet(TargetPlatformKind.Common)
|
||||
if (withStdlibCommon) {
|
||||
commonModule.addLibrary(ForTestCompileRuntime.stdlibCommonForTests())
|
||||
commonModule.addLibrary(ForTestCompileRuntime.stdlibCommonForTests(), kind = CommonLibraryKind)
|
||||
}
|
||||
|
||||
for (platform in platforms) {
|
||||
|
||||
@@ -24,6 +24,8 @@ import com.intellij.openapi.roots.libraries.Library
|
||||
import com.intellij.testFramework.ModuleTestCase
|
||||
import com.intellij.testFramework.UsefulTestCase
|
||||
import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime
|
||||
import org.jetbrains.kotlin.idea.framework.CommonLibraryKind
|
||||
import org.jetbrains.kotlin.idea.framework.JSLibraryKind
|
||||
import org.jetbrains.kotlin.test.util.addDependency
|
||||
import org.jetbrains.kotlin.test.util.jarRoot
|
||||
import org.jetbrains.kotlin.test.util.projectLibrary
|
||||
@@ -322,9 +324,13 @@ class IdeaModuleInfoTest : ModuleTestCase() {
|
||||
UsefulTestCase.assertSameElements(this.getDependentModules(), expected.toList())
|
||||
}
|
||||
|
||||
private fun stdlibCommon(): Library = projectLibrary("kotlin-stdlib-common", ForTestCompileRuntime.stdlibCommonForTests().jarRoot)
|
||||
private fun stdlibCommon(): Library = projectLibrary("kotlin-stdlib-common",
|
||||
ForTestCompileRuntime.stdlibCommonForTests().jarRoot,
|
||||
kind = CommonLibraryKind)
|
||||
|
||||
private fun stdlibJvm(): Library = projectLibrary("kotlin-stdlib", ForTestCompileRuntime.runtimeJarForTests().jarRoot)
|
||||
|
||||
private fun stdlibJs(): Library = projectLibrary("kotlin-stdlib-js", ForTestCompileRuntime.runtimeJarForTests().jarRoot)
|
||||
private fun stdlibJs(): Library = projectLibrary("kotlin-stdlib-js",
|
||||
ForTestCompileRuntime.runtimeJarForTests().jarRoot,
|
||||
kind = JSLibraryKind)
|
||||
}
|
||||
|
||||
@@ -29,6 +29,7 @@ import org.jetbrains.kotlin.config.TargetPlatformKind
|
||||
import org.jetbrains.kotlin.idea.completion.test.withServiceRegistered
|
||||
import org.jetbrains.kotlin.idea.facet.KotlinFacetConfiguration
|
||||
import org.jetbrains.kotlin.idea.facet.KotlinFacetType
|
||||
import org.jetbrains.kotlin.idea.framework.JSLibraryKind
|
||||
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
|
||||
import org.jetbrains.kotlin.idea.util.application.runWriteAction
|
||||
import org.jetbrains.kotlin.test.TestJdkKind.FULL_JDK
|
||||
@@ -177,7 +178,7 @@ open class MultiModuleHighlightingTest : AbstractMultiModuleHighlightingTest() {
|
||||
doMultiPlatformTest(TargetPlatformKind.Jvm[JvmTarget.JVM_1_8], TargetPlatformKind.JavaScript,
|
||||
withStdlibCommon = true, jdk = FULL_JDK, configureModule = { module, platform ->
|
||||
if (platform == TargetPlatformKind.JavaScript) {
|
||||
module.addLibrary(ForTestCompileRuntime.stdlibJsForTests())
|
||||
module.addLibrary(ForTestCompileRuntime.stdlibJsForTests(), kind = JSLibraryKind)
|
||||
module.addLibrary(ForTestCompileRuntime.stdlibCommonForTests())
|
||||
}
|
||||
})
|
||||
|
||||
@@ -205,7 +205,7 @@ public abstract class KotlinDebuggerTestCase extends DescriptorTestCase {
|
||||
customLibEditor.addRoot(VfsUtil.getUrlForLibraryRoot(classes), OrderRootType.CLASSES);
|
||||
customLibEditor.addRoot(VfsUtil.getUrlForLibraryRoot(sources), OrderRootType.SOURCES);
|
||||
|
||||
ConfigLibraryUtil.INSTANCE.addLibrary(customLibEditor, model);
|
||||
ConfigLibraryUtil.INSTANCE.addLibrary(customLibEditor, model, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -25,6 +25,7 @@ import com.intellij.openapi.module.StdModuleTypes
|
||||
import com.intellij.openapi.roots.DependencyScope
|
||||
import com.intellij.openapi.roots.ModuleRootModificationUtil
|
||||
import com.intellij.openapi.roots.OrderRootType
|
||||
import com.intellij.openapi.roots.libraries.PersistentLibraryKind
|
||||
import com.intellij.openapi.roots.ui.configuration.libraryEditor.NewLibraryEditor
|
||||
import com.intellij.openapi.util.io.FileUtil
|
||||
import com.intellij.openapi.vfs.LocalFileSystem
|
||||
@@ -86,11 +87,13 @@ abstract class AbstractMultiModuleTest : DaemonAnalyzerTestCase() {
|
||||
exported: Boolean = false
|
||||
): Module = this.apply { ModuleRootModificationUtil.addDependency(this, other, dependencyScope, exported) }
|
||||
|
||||
protected fun Module.addLibrary(jar: File, name: String = KotlinJdkAndLibraryProjectDescriptor.LIBRARY_NAME) {
|
||||
protected fun Module.addLibrary(jar: File,
|
||||
name: String = KotlinJdkAndLibraryProjectDescriptor.LIBRARY_NAME,
|
||||
kind: PersistentLibraryKind<*>? = null) {
|
||||
ConfigLibraryUtil.addLibrary(NewLibraryEditor().apply {
|
||||
this.name = name
|
||||
addRoot(VfsUtil.getUrlForLibraryRoot(jar), OrderRootType.CLASSES)
|
||||
}, this)
|
||||
}, this, kind)
|
||||
}
|
||||
|
||||
protected fun Module.createFacet(platformKind: TargetPlatformKind<*>? = null) {
|
||||
|
||||
@@ -22,6 +22,7 @@ import com.intellij.openapi.roots.ModuleRootModificationUtil
|
||||
import com.intellij.openapi.roots.OrderRootType
|
||||
import com.intellij.openapi.roots.impl.libraries.ProjectLibraryTable
|
||||
import com.intellij.openapi.roots.libraries.Library
|
||||
import com.intellij.openapi.roots.libraries.PersistentLibraryKind
|
||||
import com.intellij.openapi.vfs.LocalFileSystem
|
||||
import com.intellij.openapi.vfs.StandardFileSystems
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
@@ -30,16 +31,24 @@ import org.jetbrains.kotlin.test.testFramework.runWriteAction
|
||||
import java.io.File
|
||||
|
||||
fun PlatformTestCase.projectLibrary(
|
||||
libraryName: String = "TestLibrary", classesRoot: VirtualFile? = null, sourcesRoot: VirtualFile? = null
|
||||
libraryName: String = "TestLibrary",
|
||||
classesRoot: VirtualFile? = null,
|
||||
sourcesRoot: VirtualFile? = null,
|
||||
kind: PersistentLibraryKind<*>? = null
|
||||
): Library {
|
||||
return runWriteAction {
|
||||
ProjectLibraryTable.getInstance(project).createLibrary(libraryName).also {
|
||||
with (it.modifiableModel) {
|
||||
classesRoot?.let { addRoot(it, OrderRootType.CLASSES) }
|
||||
sourcesRoot?.let { addRoot(it, OrderRootType.SOURCES) }
|
||||
commit()
|
||||
}
|
||||
val modifiableModel = ProjectLibraryTable.getInstance(project).modifiableModel
|
||||
val library = try {
|
||||
modifiableModel.createLibrary(libraryName, kind)
|
||||
} finally {
|
||||
modifiableModel.commit()
|
||||
}
|
||||
with (library.modifiableModel) {
|
||||
classesRoot?.let { addRoot(it, OrderRootType.CLASSES) }
|
||||
sourcesRoot?.let { addRoot(it, OrderRootType.SOURCES) }
|
||||
commit()
|
||||
}
|
||||
library
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user