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