diff --git a/jps/jps-common/src/org/jetbrains/kotlin/config/KotlinFacetSettings.kt b/jps/jps-common/src/org/jetbrains/kotlin/config/KotlinFacetSettings.kt index 66400269c06..14c0d2f3136 100644 --- a/jps/jps-common/src/org/jetbrains/kotlin/config/KotlinFacetSettings.kt +++ b/jps/jps-common/src/org/jetbrains/kotlin/config/KotlinFacetSettings.kt @@ -215,6 +215,7 @@ class KotlinFacetSettings { var kind: KotlinModuleKind = KotlinModuleKind.DEFAULT var sourceSetNames: List = emptyList() + var isTestModule: Boolean = false } interface KotlinFacetSettingsProvider { diff --git a/jps/jps-common/src/org/jetbrains/kotlin/config/facetSerialization.kt b/jps/jps-common/src/org/jetbrains/kotlin/config/facetSerialization.kt index 00628569a62..33eb65f939a 100644 --- a/jps/jps-common/src/org/jetbrains/kotlin/config/facetSerialization.kt +++ b/jps/jps-common/src/org/jetbrains/kotlin/config/facetSerialization.kt @@ -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) { diff --git a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinSourceRootProvider.kt b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinSourceRootProvider.kt index a0dc46d6bb7..307e75b6df6 100644 --- a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinSourceRootProvider.kt +++ b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinSourceRootProvider.kt @@ -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 - addModuleSourceRoots(result, sourceSetModule, target) + if (target.isTests == module.isTestModule) { + module.sourceSetModules.forEach { sourceSetModule -> + addModuleSourceRoots(result, sourceSetModule, target) + } } // legacy multiplatform model support: diff --git a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/model/ModuleSettings.kt b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/model/ModuleSettings.kt index f5bd9d995c8..4ef9e8780a1 100644 --- a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/model/ModuleSettings.kt +++ b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/model/ModuleSettings.kt @@ -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.