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 sourceSetNames: List<String> = emptyList()
var isTestModule: Boolean = false
}
interface KotlinFacetSettingsProvider {
@@ -131,6 +131,7 @@ private fun readV2AndLaterConfig(element: Element): KotlinFacetSettings {
}
} else null
} ?: KotlinModuleKind.DEFAULT
isTestModule = element.getAttributeValue("isTestModule")?.toBoolean() ?: false
element.getChild("compilerSettings")?.let {
compilerSettings = CompilerSettings()
XmlSerializer.deserializeInto(compilerSettings!!, it)
@@ -289,6 +290,7 @@ private fun KotlinFacetSettings.writeLatestConfig(element: Element) {
}
if (kind != KotlinModuleKind.DEFAULT) {
element.addContent(Element("newMppModelJpsModuleKind").apply { addContent(kind.name) })
element.setAttribute("isTestModule", isTestModule.toString())
}
productionOutputPath?.let {
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.JavaSourceRootProperties
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.JpsModuleSourceRootType
import org.jetbrains.kotlin.config.KotlinResourceRootType
import org.jetbrains.kotlin.config.KotlinSourceRootType
import org.jetbrains.kotlin.jps.model.expectedByModules
import org.jetbrains.kotlin.jps.model.isTestModule
import org.jetbrains.kotlin.jps.model.sourceSetModules
import java.io.File
@@ -54,8 +54,10 @@ class KotlinSourceRootProvider : AdditionalRootsProviderService<JavaSourceRootDe
}
// new multiplatform model support:
module.sourceSetModules.forEach { sourceSetModule ->
addModuleSourceRoots(result, sourceSetModule, target)
if (target.isTests == module.isTestModule) {
module.sourceSetModules.forEach { sourceSetModule ->
addModuleSourceRoots(result, sourceSetModule, target)
}
}
// legacy multiplatform model support:
@@ -22,6 +22,9 @@ val JpsModule.platform: IdePlatform<*, *>?
val JpsModule.kotlinKind: KotlinModuleKind
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.
* This module is not included.