jps (refactor): reimplement KotlinModuleBuildTarget data binding using CompileContext
Original commit: 9fafe0473c
This commit is contained in:
+1
@@ -40,6 +40,7 @@ import org.jetbrains.jps.cmdline.ProjectDescriptor
|
||||
import org.jetbrains.jps.incremental.*
|
||||
import org.jetbrains.jps.incremental.messages.BuildMessage
|
||||
import org.jetbrains.jps.model.JpsModuleRootModificationUtil
|
||||
import org.jetbrains.jps.model.java.JpsJavaDependencyScope
|
||||
import org.jetbrains.jps.model.java.JpsJavaExtensionService
|
||||
import org.jetbrains.jps.util.JpsPathUtil
|
||||
import org.jetbrains.kotlin.config.IncrementalCompilation
|
||||
|
||||
-4
@@ -17,23 +17,19 @@
|
||||
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)
|
||||
override fun setUp() {
|
||||
super.setUp()
|
||||
JpsUtils.resetCaches()
|
||||
System.setProperty("kotlin.jps.tests", "true")
|
||||
}
|
||||
|
||||
@Throws(Exception::class)
|
||||
override fun tearDown() {
|
||||
JpsUtils.resetCaches()
|
||||
System.clearProperty("kotlin.jps.tests")
|
||||
super.tearDown()
|
||||
myModel = null
|
||||
myBuildParams.clear()
|
||||
clearKotlinModuleBuildTargetDataBindings()
|
||||
}
|
||||
}
|
||||
@@ -64,9 +64,6 @@ import org.jetbrains.kotlin.jps.model.JpsKotlinCompilerSettings
|
||||
import org.jetbrains.kotlin.jps.build.KotlinJpsBuildTest.LibraryDependency.*
|
||||
import org.jetbrains.kotlin.jps.model.kotlinCommonCompilerArguments
|
||||
import org.jetbrains.kotlin.jps.model.kotlinCompilerArguments
|
||||
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
|
||||
@@ -181,8 +178,6 @@ open class KotlinJpsBuildTest : AbstractKotlinJpsBuildTestCase() {
|
||||
originalProjectDir = projDirPath.toFile()
|
||||
workDir = AbstractKotlinJpsBuildTestCase.copyTestDataToTmpDir(originalProjectDir)
|
||||
orCreateProjectDir
|
||||
|
||||
JpsUtils.resetCaches()
|
||||
}
|
||||
|
||||
override fun tearDown() {
|
||||
@@ -250,7 +245,7 @@ open class KotlinJpsBuildTest : AbstractKotlinJpsBuildTestCase() {
|
||||
buildAllModules().assertSuccessful()
|
||||
|
||||
checkOutputFilesList()
|
||||
checkWhen(touch("src/test1.kt"), null, k2jsOutput(PROJECT_NAME))
|
||||
checkWhen(touch("src/test1.kt"), null, pathsToDelete = k2jsOutput(PROJECT_NAME))
|
||||
}
|
||||
|
||||
private fun k2jsOutput(vararg moduleNames: String): Array<String> {
|
||||
@@ -259,11 +254,11 @@ open class KotlinJpsBuildTest : AbstractKotlinJpsBuildTestCase() {
|
||||
|
||||
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 outputDir = it.productionBuildTarget.outputDir!!
|
||||
list.add(toSystemIndependentName(File("$outputDir/${it.name}.js").relativeTo(workDir).path))
|
||||
list.add(toSystemIndependentName(File("$outputDir/${it.name}.meta.js").relativeTo(workDir).path))
|
||||
|
||||
val kjsmFiles = productionTarget.outputDir.walk()
|
||||
val kjsmFiles = outputDir.walk()
|
||||
.filter { it.isFile && it.extension.equals("kjsm", ignoreCase = true) }
|
||||
|
||||
list.addAll(kjsmFiles.map { toSystemIndependentName(it.relativeTo(workDir).path) })
|
||||
@@ -1068,8 +1063,6 @@ open class KotlinJpsBuildTest : AbstractKotlinJpsBuildTestCase() {
|
||||
}
|
||||
|
||||
protected fun checkWhen(actions: Array<Action>, pathsToCompile: Array<String>?, pathsToDelete: Array<String>?) {
|
||||
clearKotlinModuleBuildTargetDataBindings()
|
||||
|
||||
for (action in actions) {
|
||||
action.apply()
|
||||
}
|
||||
|
||||
+20
-14
@@ -62,8 +62,11 @@ import org.jetbrains.kotlin.config.KotlinCompilerVersion.TEST_IS_PRE_RELEASE_SYS
|
||||
import org.jetbrains.kotlin.incremental.CacheVersion
|
||||
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
||||
import org.jetbrains.kotlin.incremental.withIC
|
||||
import org.jetbrains.kotlin.jps.JpsKotlinCompilerSettings
|
||||
import org.jetbrains.kotlin.jps.model.JpsKotlinCompilerSettings
|
||||
import org.jetbrains.kotlin.jps.build.KotlinJpsBuildTest.LibraryDependency.*
|
||||
import org.jetbrains.kotlin.jps.model.kotlinCommonCompilerArguments
|
||||
import org.jetbrains.kotlin.jps.model.kotlinCompilerArguments
|
||||
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
|
||||
@@ -174,8 +177,6 @@ open class KotlinJpsBuildTest : AbstractKotlinJpsBuildTestCase() {
|
||||
originalProjectDir = projDirPath.toFile()
|
||||
workDir = AbstractKotlinJpsBuildTestCase.copyTestDataToTmpDir(originalProjectDir)
|
||||
orCreateProjectDir
|
||||
|
||||
JpsUtils.resetCaches()
|
||||
}
|
||||
|
||||
override fun tearDown() {
|
||||
@@ -243,21 +244,26 @@ open class KotlinJpsBuildTest : AbstractKotlinJpsBuildTestCase() {
|
||||
buildAllModules().assertSuccessful()
|
||||
|
||||
checkOutputFilesList()
|
||||
checkWhen(touch("src/test1.kt"), null, k2jsOutput(PROJECT_NAME))
|
||||
checkWhen(touch("src/test1.kt"), null, pathsToDelete = k2jsOutput(PROJECT_NAME))
|
||||
}
|
||||
|
||||
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 outputDir = it.productionBuildTarget.outputDir!!
|
||||
list.add(toSystemIndependentName(File("$outputDir/${it.name}.js").relativeTo(workDir).path))
|
||||
list.add(toSystemIndependentName(File("$outputDir/${it.name}.meta.js").relativeTo(workDir).path))
|
||||
|
||||
val kjsmFiles = outputDir.walk()
|
||||
.filter { it.isFile && it.extension.equals("kjsm", ignoreCase = true) }
|
||||
|
||||
list.addAll(kjsmFiles.map { toSystemIndependentName(it.relativeTo(workDir).path) })
|
||||
}
|
||||
}
|
||||
|
||||
return list.toTypedArray()
|
||||
}
|
||||
|
||||
@@ -515,9 +521,9 @@ open class KotlinJpsBuildTest : AbstractKotlinJpsBuildTestCase() {
|
||||
|
||||
assertEquals(1, myProject.modules.size)
|
||||
val module = myProject.modules.first()
|
||||
val args = JpsKotlinCompilerSettings.getCommonCompilerArguments(module)
|
||||
val args = module.kotlinCompilerArguments
|
||||
args.apiVersion = "1.2"
|
||||
JpsKotlinCompilerSettings.setCommonCompilerArguments(myProject, args)
|
||||
myProject.kotlinCommonCompilerArguments = args
|
||||
|
||||
buildAllModules().assertSuccessful()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user