MPP: Implement isTestModule flag (as required by JPS)

Original commit: 6206f1e419
This commit is contained in:
Alexey Sedunov
2018-09-07 18:54:38 +03:00
parent 947a6399eb
commit 8a5d392e8d
4 changed files with 11 additions and 3 deletions
@@ -215,6 +215,7 @@ class KotlinFacetSettings {
var kind: KotlinModuleKind = KotlinModuleKind.DEFAULT var kind: KotlinModuleKind = KotlinModuleKind.DEFAULT
var sourceSetNames: List<String> = emptyList() var sourceSetNames: List<String> = emptyList()
var isTestModule: Boolean = false
} }
interface KotlinFacetSettingsProvider { interface KotlinFacetSettingsProvider {
@@ -131,6 +131,7 @@ private fun readV2AndLaterConfig(element: Element): KotlinFacetSettings {
} }
} else null } else null
} ?: KotlinModuleKind.DEFAULT } ?: KotlinModuleKind.DEFAULT
isTestModule = element.getAttributeValue("isTestModule")?.toBoolean() ?: false
element.getChild("compilerSettings")?.let { element.getChild("compilerSettings")?.let {
compilerSettings = CompilerSettings() compilerSettings = CompilerSettings()
XmlSerializer.deserializeInto(compilerSettings!!, it) XmlSerializer.deserializeInto(compilerSettings!!, it)
@@ -289,6 +290,7 @@ private fun KotlinFacetSettings.writeLatestConfig(element: Element) {
} }
if (kind != KotlinModuleKind.DEFAULT) { if (kind != KotlinModuleKind.DEFAULT) {
element.addContent(Element("newMppModelJpsModuleKind").apply { addContent(kind.name) }) element.addContent(Element("newMppModelJpsModuleKind").apply { addContent(kind.name) })
element.setAttribute("isTestModule", isTestModule.toString())
} }
productionOutputPath?.let { productionOutputPath?.let {
if (it != (compilerArguments as? K2JSCompilerArguments)?.outputFile) { if (it != (compilerArguments as? K2JSCompilerArguments)?.outputFile) {
@@ -14,12 +14,12 @@ import org.jetbrains.jps.incremental.ModuleBuildTarget
import org.jetbrains.jps.model.java.JavaResourceRootType import org.jetbrains.jps.model.java.JavaResourceRootType
import org.jetbrains.jps.model.java.JavaSourceRootProperties import org.jetbrains.jps.model.java.JavaSourceRootProperties
import org.jetbrains.jps.model.java.JavaSourceRootType import org.jetbrains.jps.model.java.JavaSourceRootType
import org.jetbrains.jps.model.java.JpsJavaExtensionService
import org.jetbrains.jps.model.module.JpsModule import org.jetbrains.jps.model.module.JpsModule
import org.jetbrains.jps.model.module.JpsModuleSourceRootType import org.jetbrains.jps.model.module.JpsModuleSourceRootType
import org.jetbrains.kotlin.config.KotlinResourceRootType import org.jetbrains.kotlin.config.KotlinResourceRootType
import org.jetbrains.kotlin.config.KotlinSourceRootType import org.jetbrains.kotlin.config.KotlinSourceRootType
import org.jetbrains.kotlin.jps.model.expectedByModules import org.jetbrains.kotlin.jps.model.expectedByModules
import org.jetbrains.kotlin.jps.model.isTestModule
import org.jetbrains.kotlin.jps.model.sourceSetModules import org.jetbrains.kotlin.jps.model.sourceSetModules
import java.io.File import java.io.File
@@ -54,8 +54,10 @@ class KotlinSourceRootProvider : AdditionalRootsProviderService<JavaSourceRootDe
} }
// new multiplatform model support: // new multiplatform model support:
module.sourceSetModules.forEach { sourceSetModule -> if (target.isTests == module.isTestModule) {
addModuleSourceRoots(result, sourceSetModule, target) module.sourceSetModules.forEach { sourceSetModule ->
addModuleSourceRoots(result, sourceSetModule, target)
}
} }
// legacy multiplatform model support: // legacy multiplatform model support:
@@ -22,6 +22,9 @@ val JpsModule.platform: IdePlatform<*, *>?
val JpsModule.kotlinKind: KotlinModuleKind val JpsModule.kotlinKind: KotlinModuleKind
get() = kotlinFacet?.settings?.kind ?: KotlinModuleKind.DEFAULT get() = kotlinFacet?.settings?.kind ?: KotlinModuleKind.DEFAULT
val JpsModule.isTestModule: Boolean
get() = kotlinFacet?.settings?.isTestModule ?: false
/** /**
* Modules which is imported from sources sets of the compilation represented by this module. * Modules which is imported from sources sets of the compilation represented by this module.
* This module is not included. * This module is not included.