JPS: fixed duplicate meta.js in case of multiple source roots in the same module.
Original commit: f0e3c87b84
This commit is contained in:
@@ -388,8 +388,18 @@ class KotlinJpsBuildTest : AbstractKotlinJpsBuildTestCase() {
|
|||||||
buildResult.assertSuccessful()
|
buildResult.assertSuccessful()
|
||||||
|
|
||||||
val warnings = buildResult.getMessages(BuildMessage.Kind.WARNING)
|
val warnings = buildResult.getMessages(BuildMessage.Kind.WARNING)
|
||||||
assertEquals("Warning about duplicate module definition: $warnings", 1, warnings.size)
|
assertEquals("Warning about duplicate module definition: $warnings", 2, warnings.size)
|
||||||
assertEquals("Module \"srcAndTests\" is defined in more, than one file", warnings.first().messageText)
|
assertEquals("Module \"srcAndTests\" is defined in more, than one file", warnings[0].messageText)
|
||||||
|
assertEquals("Module \"srcAndTests\" is defined in more, than one file", warnings[1].messageText)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun testKotlinJavaScriptProjectWithTwoSrcModuleDependency() {
|
||||||
|
initProject(JS_STDLIB)
|
||||||
|
val buildResult = makeAll()
|
||||||
|
buildResult.assertSuccessful()
|
||||||
|
|
||||||
|
val warnings = buildResult.getMessages(BuildMessage.Kind.WARNING)
|
||||||
|
assertEquals("Warning about duplicate module definition: $warnings", 0, warnings.size)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun testExcludeFolderInSourceRoot() {
|
fun testExcludeFolderInSourceRoot() {
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ import org.jetbrains.jps.model.module.JpsModule
|
|||||||
import org.jetbrains.jps.util.JpsPathUtil
|
import org.jetbrains.jps.util.JpsPathUtil
|
||||||
import org.jetbrains.kotlin.utils.KotlinJavascriptMetadataUtils
|
import org.jetbrains.kotlin.utils.KotlinJavascriptMetadataUtils
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.util.ArrayList
|
import java.util.*
|
||||||
|
|
||||||
object JpsJsModuleUtils {
|
object JpsJsModuleUtils {
|
||||||
fun getLibraryFilesAndDependencies(target: ModuleBuildTarget): List<String> {
|
fun getLibraryFilesAndDependencies(target: ModuleBuildTarget): List<String> {
|
||||||
@@ -50,20 +50,31 @@ object JpsJsModuleUtils {
|
|||||||
override fun consume(module: JpsModule) {
|
override fun consume(module: JpsModule) {
|
||||||
if (module.moduleType != JpsJavaModuleType.INSTANCE) return
|
if (module.moduleType != JpsJavaModuleType.INSTANCE) return
|
||||||
|
|
||||||
for (root in module.sourceRoots) {
|
var yieldProduction = module != target.module || target.isTests
|
||||||
val isTestSource = root.rootType == JavaSourceRootType.TEST_SOURCE
|
var yieldTests = module != target.module
|
||||||
|
|
||||||
if (module == target.module && isTestSource == target.isTests) continue
|
module.sourceRoots.forEach {
|
||||||
|
if (it.rootType == JavaSourceRootType.SOURCE) {
|
||||||
if (!isTestSource || target.isTests) {
|
if (yieldProduction) {
|
||||||
val targetType = if (isTestSource) JavaModuleBuildTargetType.TEST else JavaModuleBuildTargetType.PRODUCTION
|
addTarget(module, JavaModuleBuildTargetType.PRODUCTION)
|
||||||
val moduleBuildTarget = ModuleBuildTarget(module, targetType)
|
yieldProduction = false
|
||||||
val outputDir = KotlinBuilderModuleScriptGenerator.getOutputDirSafe(moduleBuildTarget)
|
}
|
||||||
val metaInfoFile = getOutputMetaFile(outputDir, module.name)
|
}
|
||||||
result.add(metaInfoFile.absolutePath)
|
else {
|
||||||
|
if (yieldTests) {
|
||||||
|
addTarget(module, JavaModuleBuildTargetType.TEST)
|
||||||
|
yieldTests = false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun addTarget(module: JpsModule, targetType: JavaModuleBuildTargetType) {
|
||||||
|
val moduleBuildTarget = ModuleBuildTarget(module, targetType)
|
||||||
|
val outputDir = KotlinBuilderModuleScriptGenerator.getOutputDirSafe(moduleBuildTarget)
|
||||||
|
val metaInfoFile = getOutputMetaFile(outputDir, module.name)
|
||||||
|
result.add(metaInfoFile.absolutePath)
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+12
@@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="JAVA_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||||
|
<exclude-output />
|
||||||
|
<content url="file://$MODULE_DIR$">
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||||
|
</content>
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
<orderEntry type="module" module-name="srcs" />
|
||||||
|
</component>
|
||||||
|
</module>
|
||||||
+15
@@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="CompilerConfiguration">
|
||||||
|
<option name="DEFAULT_COMPILER" value="Javac" />
|
||||||
|
</component>
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/srcs/srcs.iml" filepath="$PROJECT_DIR$/srcs/srcs.iml" />
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/kotlinProject.iml" filepath="$PROJECT_DIR$/kotlinProject.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.6" project-jdk-type="JavaSDK">
|
||||||
|
<output url="file://$PROJECT_DIR$/out" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
+4
@@ -0,0 +1,4 @@
|
|||||||
|
fun main() {
|
||||||
|
src()
|
||||||
|
src2()
|
||||||
|
}
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
fun src() {
|
||||||
|
src2()
|
||||||
|
}
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
fun src2() {
|
||||||
|
src()
|
||||||
|
}
|
||||||
+12
@@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="JAVA_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||||
|
<exclude-output />
|
||||||
|
<content url="file://$MODULE_DIR$">
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src2" isTestSource="false" />
|
||||||
|
</content>
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
</component>
|
||||||
|
</module>
|
||||||
Reference in New Issue
Block a user