jps(refactor): Extract platform related code

#KT-23656 Fixed

(cherry picked from commit 18a751d)

Original commit: 75e6be7802
This commit is contained in:
Sergey Rostov
2018-04-04 14:59:17 +03:00
parent c7fe4c10bf
commit ef5d8435b6
13 changed files with 698 additions and 517 deletions
@@ -50,6 +50,9 @@ import org.jetbrains.kotlin.incremental.isJavaFile
import org.jetbrains.kotlin.incremental.testingUtils.*
import org.jetbrains.kotlin.jps.incremental.getKotlinCache
import org.jetbrains.kotlin.jps.incremental.withLookupStorage
import org.jetbrains.kotlin.jps.model.JpsKotlinFacetModuleExtension
import org.jetbrains.kotlin.jps.model.kotlinFacetExtension
import org.jetbrains.kotlin.jps.platforms.clearKotlinModuleBuildTargetDataBindings
import org.jetbrains.kotlin.test.KotlinTestUtils
import org.jetbrains.kotlin.utils.Printer
import org.jetbrains.kotlin.utils.keysToMap
@@ -17,6 +17,7 @@
package org.jetbrains.kotlin.jps.build
import org.jetbrains.jps.builders.JpsBuildTestCase
import org.jetbrains.kotlin.jps.platforms.clearKotlinModuleBuildTargetDataBindings
abstract class BaseKotlinJpsBuildTestCase : JpsBuildTestCase() {
@Throws(Exception::class)
@@ -33,5 +34,6 @@ abstract class BaseKotlinJpsBuildTestCase : JpsBuildTestCase() {
super.tearDown()
myModel = null
myBuildParams.clear()
clearKotlinModuleBuildTargetDataBindings()
}
}
@@ -62,6 +62,10 @@ import org.jetbrains.kotlin.incremental.components.LookupTracker
import org.jetbrains.kotlin.incremental.withIC
import org.jetbrains.kotlin.jps.JpsKotlinCompilerSettings
import org.jetbrains.kotlin.jps.build.KotlinJpsBuildTest.LibraryDependency.*
import org.jetbrains.kotlin.jps.platforms.KotlinJsModuleBuildTarget
import org.jetbrains.kotlin.jps.platforms.clearKotlinModuleBuildTargetDataBindings
import org.jetbrains.kotlin.jps.platforms.kotlinData
import org.jetbrains.kotlin.jps.platforms.productionBuildTarget
import org.jetbrains.kotlin.load.kotlin.PackagePartClassUtils
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.test.KotlinTestUtils
@@ -248,17 +252,22 @@ open class KotlinJpsBuildTest : AbstractKotlinJpsBuildTestCase() {
}
private fun k2jsOutput(vararg moduleNames: String): Array<String> {
val list = arrayListOf<String>()
for (moduleName in moduleNames) {
val outputDir = File("out/production/$moduleName")
list.add(toSystemIndependentName(JpsJsModuleUtils.getOutputFile(outputDir, moduleName, false).path))
list.add(toSystemIndependentName(JpsJsModuleUtils.getOutputMetaFile(outputDir, moduleName, false).path))
val moduleNamesSet = moduleNames.toSet()
val list = mutableListOf<String>()
val kjsmFiles = File(workDir, outputDir.path).walk()
.filter { it.isFile && it.extension.equals("kjsm", ignoreCase = true) }
list.addAll(kjsmFiles.map { toSystemIndependentName(it.relativeTo(workDir).path) })
myProject.modules.forEach {
if (it.name in moduleNamesSet) {
val productionTarget = it.productionBuildTarget.kotlinData as KotlinJsModuleBuildTarget
list.add(toSystemIndependentName(productionTarget.outputFile.relativeTo(workDir).path))
list.add(toSystemIndependentName(productionTarget.outputMetaFile.relativeTo(workDir).path))
val kjsmFiles = productionTarget.outputDir.walk()
.filter { it.isFile && it.extension.equals("kjsm", ignoreCase = true) }
list.addAll(kjsmFiles.map { toSystemIndependentName(it.relativeTo(workDir).path) })
}
}
return list.toTypedArray()
}
@@ -1057,6 +1066,8 @@ open class KotlinJpsBuildTest : AbstractKotlinJpsBuildTestCase() {
}
protected fun checkWhen(actions: Array<Action>, pathsToCompile: Array<String>?, pathsToDelete: Array<String>?) {
clearKotlinModuleBuildTargetDataBindings()
for (action in actions) {
action.apply()
}