Fixed tests for pureKotlinSourceFolders by extending created facets
This commit is contained in:
@@ -94,9 +94,12 @@ private fun findLongestExistingPackage(module: Module, packageName: String): Psi
|
||||
private val kotlinSourceRootTypes: Set<JpsModuleSourceRootType<JavaSourceRootProperties>> =
|
||||
setOf(SourceKotlinRootType, TestSourceKotlinRootType) + JavaModuleSourceRootTypes.SOURCES
|
||||
|
||||
private val Module.pureKotlinSourceFolders: List<String>?
|
||||
get() = KotlinFacet.get(this)?.configuration?.settings?.pureKotlinSourceFolders
|
||||
|
||||
private fun Module.getNonGeneratedKotlinSourceRoots(): List<VirtualFile> {
|
||||
val result = mutableListOf<VirtualFile>()
|
||||
val facetSettings = KotlinFacet.get(this)?.configuration?.settings
|
||||
val pureKotlinSourceFolders = this.pureKotlinSourceFolders
|
||||
|
||||
val rootManager = ModuleRootManager.getInstance(this)
|
||||
for (contentEntry in rootManager.contentEntries) {
|
||||
@@ -105,7 +108,8 @@ private fun Module.getNonGeneratedKotlinSourceRoots(): List<VirtualFile> {
|
||||
if (sourceFolder.jpsElement.getProperties(kotlinSourceRootTypes)?.isForGeneratedSources == true) {
|
||||
continue
|
||||
}
|
||||
facetSettings?.pureKotlinSourceFolders?.also { pureKotlin ->
|
||||
|
||||
pureKotlinSourceFolders?.also { pureKotlin ->
|
||||
sourceFolder.file?.also {
|
||||
if (it.path in pureKotlin) {
|
||||
result += it
|
||||
|
||||
@@ -21,6 +21,8 @@ import org.jetbrains.kotlin.idea.stubs.createMultiplatformFacetM3
|
||||
import org.jetbrains.kotlin.idea.test.ConfigLibraryUtil
|
||||
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
|
||||
import org.jetbrains.kotlin.idea.util.application.executeWriteCommand
|
||||
import org.jetbrains.kotlin.idea.util.projectStructure.getModuleDir
|
||||
import org.jetbrains.kotlin.idea.util.sourceRoots
|
||||
import org.jetbrains.kotlin.platform.CommonPlatforms
|
||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||
import org.jetbrains.kotlin.platform.isCommon
|
||||
@@ -106,15 +108,19 @@ fun AbstractMultiModuleTest.doSetup(projectModel: ProjectResolveModel) {
|
||||
|
||||
for ((resolveModule, ideaModule) in resolveModulesToIdeaModules.entries) {
|
||||
val platform = resolveModule.platform
|
||||
val pureKotlinSourceFolders = ideaModule.collectSourceFolders()
|
||||
ideaModule.createMultiplatformFacetM3(
|
||||
platform,
|
||||
dependsOnModuleNames = resolveModule.dependencies.filter { it.kind == ResolveDependency.Kind.DEPENDS_ON }.map { it.to.name }
|
||||
dependsOnModuleNames = resolveModule.dependencies.filter { it.kind == ResolveDependency.Kind.DEPENDS_ON }.map { it.to.name },
|
||||
pureKotlinSourceFolders = pureKotlinSourceFolders
|
||||
)
|
||||
// New inference is enabled here as these tests are using type refinement feature that is working only along with NI
|
||||
ideaModule.enableMultiPlatform(additionalCompilerArguments = "-Xnew-inference")
|
||||
}
|
||||
}
|
||||
|
||||
private fun Module.collectSourceFolders(): List<String> = sourceRoots.map { it.path }
|
||||
|
||||
private fun AbstractMultiModuleTest.doSetupProject(rootInfos: List<RootInfo>) {
|
||||
val infosByModuleId = rootInfos.groupBy { it.moduleId }
|
||||
val modulesById = infosByModuleId.mapValues { (moduleId, infos) ->
|
||||
@@ -153,15 +159,25 @@ private fun AbstractMultiModuleTest.doSetupProject(rootInfos: List<RootInfo>) {
|
||||
|
||||
modulesById.forEach { (nameAndPlatform, module) ->
|
||||
val (name, platform) = nameAndPlatform
|
||||
val pureKotlinSourceFolders = module.collectSourceFolders()
|
||||
when {
|
||||
platform.isCommon() -> {
|
||||
module.createMultiplatformFacetM1(platform, useProjectSettings = false, implementedModuleNames = emptyList())
|
||||
module.createMultiplatformFacetM1(
|
||||
platform,
|
||||
useProjectSettings = false,
|
||||
implementedModuleNames = emptyList(),
|
||||
pureKotlinSourceFolders = pureKotlinSourceFolders
|
||||
)
|
||||
}
|
||||
|
||||
else -> {
|
||||
val commonModuleId = ModuleId(name, CommonPlatforms.defaultCommonPlatform)
|
||||
|
||||
module.createMultiplatformFacetM1(platform, implementedModuleNames = listOf(commonModuleId.ideaModuleName()))
|
||||
module.createMultiplatformFacetM1(
|
||||
platform,
|
||||
implementedModuleNames = listOf(commonModuleId.ideaModuleName()),
|
||||
pureKotlinSourceFolders = pureKotlinSourceFolders
|
||||
)
|
||||
module.enableMultiPlatform()
|
||||
|
||||
modulesById[commonModuleId]?.let { commonModule ->
|
||||
|
||||
@@ -155,21 +155,25 @@ fun Module.createFacet(
|
||||
fun Module.createMultiplatformFacetM1(
|
||||
platformKind: TargetPlatform? = null,
|
||||
useProjectSettings: Boolean = true,
|
||||
implementedModuleNames: List<String>
|
||||
implementedModuleNames: List<String>,
|
||||
pureKotlinSourceFolders: List<String>
|
||||
) {
|
||||
createFacetWithAdditionalSetup(platformKind, useProjectSettings) {
|
||||
this.implementedModuleNames = implementedModuleNames
|
||||
this.pureKotlinSourceFolders = pureKotlinSourceFolders
|
||||
}
|
||||
}
|
||||
|
||||
fun Module.createMultiplatformFacetM3(
|
||||
platformKind: TargetPlatform? = null,
|
||||
useProjectSettings: Boolean = true,
|
||||
dependsOnModuleNames: List<String>
|
||||
dependsOnModuleNames: List<String>,
|
||||
pureKotlinSourceFolders: List<String>
|
||||
) {
|
||||
createFacetWithAdditionalSetup(platformKind, useProjectSettings) {
|
||||
this.dependsOnModuleNames = dependsOnModuleNames
|
||||
this.isHmppEnabled = true
|
||||
this.pureKotlinSourceFolders = pureKotlinSourceFolders
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user