JPS tests: switch to new dependencies.txt parser
Order of modules changed because new parser preserve order, while previously modules are accidentally sorted by hashCode().
This commit is contained in:
+67
-57
@@ -38,22 +38,25 @@ import org.jetbrains.jps.builders.logging.BuildLoggingManager
|
||||
import org.jetbrains.jps.cmdline.ProjectDescriptor
|
||||
import org.jetbrains.jps.incremental.*
|
||||
import org.jetbrains.jps.incremental.messages.BuildMessage
|
||||
import org.jetbrains.jps.model.JpsDummyElement
|
||||
import org.jetbrains.jps.model.JpsModuleRootModificationUtil
|
||||
import org.jetbrains.jps.model.java.JpsJavaDependencyScope
|
||||
import org.jetbrains.jps.model.java.JpsJavaExtensionService
|
||||
import org.jetbrains.jps.model.library.sdk.JpsSdk
|
||||
import org.jetbrains.jps.util.JpsPathUtil
|
||||
import org.jetbrains.kotlin.config.IncrementalCompilation
|
||||
import org.jetbrains.kotlin.incremental.LookupSymbol
|
||||
import org.jetbrains.kotlin.incremental.storage.version.CacheAttributesDiff
|
||||
import org.jetbrains.kotlin.incremental.storage.version.CacheVersionManager
|
||||
import org.jetbrains.kotlin.incremental.testingUtils.*
|
||||
import org.jetbrains.kotlin.jps.build.dependeciestxt.DependenciesTxtBuilder
|
||||
import org.jetbrains.kotlin.jps.build.dependeciestxt.ModulesTxt
|
||||
import org.jetbrains.kotlin.jps.incremental.CompositeLookupsCacheAttributesManager
|
||||
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.targets.KotlinModuleBuildTarget
|
||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||
import org.jetbrains.kotlin.utils.Printer
|
||||
import org.jetbrains.kotlin.utils.keysToMap
|
||||
import java.io.ByteArrayInputStream
|
||||
import java.io.ByteArrayOutputStream
|
||||
import java.io.File
|
||||
@@ -247,20 +250,11 @@ abstract class AbstractIncrementalJpsTest(
|
||||
rebuildAndCheckOutput(makeOverallResult)
|
||||
}
|
||||
|
||||
private fun readModuleDependencies(): Map<String, List<DependencyDescriptor>>? {
|
||||
val dependenciesTxt = File(testDataDir, "dependencies.txt")
|
||||
if (!dependenciesTxt.exists()) return null
|
||||
private fun readModulesConfig(): ModulesTxt? {
|
||||
val dependenciesTxtFile = File(testDataDir, "dependencies.txt")
|
||||
if (!dependenciesTxtFile.exists()) return null
|
||||
|
||||
val result = HashMap<String, List<DependencyDescriptor>>()
|
||||
for (line in dependenciesTxt.readLines()) {
|
||||
val split = line.split("->")
|
||||
val module = split[0]
|
||||
val dependencies = if (split.size > 1) split[1] else ""
|
||||
val dependencyList = dependencies.split(",").filterNot { it.isEmpty() }
|
||||
result[module] = dependencyList.map(::parseDependency)
|
||||
}
|
||||
|
||||
return result
|
||||
return DependenciesTxtBuilder().readFile(dependenciesTxtFile)
|
||||
}
|
||||
|
||||
protected open fun createBuildLog(incrementalMakeResults: List<AbstractIncrementalJpsTest.MakeResult>): String =
|
||||
@@ -277,10 +271,10 @@ abstract class AbstractIncrementalJpsTest(
|
||||
workDir = FileUtilRt.createTempDirectory(TEMP_DIRECTORY_TO_USE, "jps-build", null)
|
||||
Disposer.register(testRootDisposable, Disposable { FileUtilRt.delete(workDir) })
|
||||
|
||||
val moduleNames = configureModules()
|
||||
val modulesTxt = configureModules()
|
||||
initialMake()
|
||||
|
||||
val otherMakeResults = performModificationsAndMake(moduleNames)
|
||||
val otherMakeResults = performModificationsAndMake(modulesTxt?.modules?.map { it.name })
|
||||
val buildLogFile = buildLogFinder.findBuildLog(testDataDir)
|
||||
val logs = createBuildLog(otherMakeResults)
|
||||
|
||||
@@ -371,7 +365,7 @@ abstract class AbstractIncrementalJpsTest(
|
||||
|
||||
protected data class MakeResult(val log: String, val makeFailed: Boolean, val mappingsDump: String?)
|
||||
|
||||
private fun performModificationsAndMake(moduleNames: Set<String>?): List<MakeResult> {
|
||||
private fun performModificationsAndMake(moduleNames: Collection<String>?): List<MakeResult> {
|
||||
val results = arrayListOf<MakeResult>()
|
||||
val modifications = getModificationsToPerform(testDataDir, moduleNames, allowNoFilesWithSuffixInTestData, TouchPolicy.TIMESTAMP)
|
||||
|
||||
@@ -393,55 +387,71 @@ abstract class AbstractIncrementalJpsTest(
|
||||
}
|
||||
|
||||
// null means one module
|
||||
private fun configureModules(): Set<String>? {
|
||||
fun prepareModuleSources(moduleName: String?) {
|
||||
val sourceDirName = moduleName?.let { "$it/src" } ?: "src"
|
||||
val filePrefix = moduleName?.let { "${it}_" } ?: ""
|
||||
val sourceDestinationDir = File(workDir, sourceDirName)
|
||||
val sourcesMapping = copyTestSources(testDataDir, sourceDestinationDir, filePrefix)
|
||||
mapWorkingToOriginalFile.putAll(sourcesMapping)
|
||||
preProcessSources(sourceDestinationDir)
|
||||
}
|
||||
|
||||
private fun configureModules(): ModulesTxt? {
|
||||
JpsJavaExtensionService.getInstance().getOrCreateProjectExtension(myProject).outputUrl =
|
||||
JpsPathUtil.pathToUrl(getAbsolutePath("out"))
|
||||
|
||||
val jdk = addJdk("my jdk")
|
||||
val moduleDependencies = readModuleDependencies()
|
||||
val moduleDependencies = readModulesConfig()
|
||||
mapWorkingToOriginalFile = hashMapOf()
|
||||
|
||||
val moduleNames: Set<String>?
|
||||
if (moduleDependencies == null) {
|
||||
addModule("module", arrayOf(getAbsolutePath("src")), null, null, jdk)
|
||||
prepareModuleSources(moduleName = null)
|
||||
moduleNames = null
|
||||
} else {
|
||||
val nameToModule = moduleDependencies.keys
|
||||
.keysToMap { addModule(it, arrayOf(getAbsolutePath("$it/src")), null, null, jdk)!! }
|
||||
if (moduleDependencies == null) configureSingleModuleProject(jdk)
|
||||
else configureMultiModuleProject(moduleDependencies, jdk)
|
||||
|
||||
for ((moduleName, dependencies) in moduleDependencies) {
|
||||
val module = nameToModule[moduleName]!!
|
||||
addStdlib()
|
||||
|
||||
for (dependency in dependencies) {
|
||||
JpsModuleRootModificationUtil.addDependency(
|
||||
module, nameToModule[dependency.name],
|
||||
JpsJavaDependencyScope.COMPILE, dependency.exported
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for (module in nameToModule.values) {
|
||||
prepareModuleSources(module.name)
|
||||
}
|
||||
|
||||
moduleNames = nameToModule.keys
|
||||
}
|
||||
|
||||
configureDependencies()
|
||||
return moduleNames
|
||||
return moduleDependencies
|
||||
}
|
||||
|
||||
protected open fun configureDependencies() {
|
||||
private fun configureSingleModuleProject(jdk: JpsSdk<JpsDummyElement>?) {
|
||||
addModule("module", arrayOf(getAbsolutePath("src")), null, null, jdk)
|
||||
|
||||
val sourceDestinationDir = File(workDir, "src")
|
||||
val sourcesMapping = copyTestSources(testDataDir, File(workDir, "src"), "")
|
||||
mapWorkingToOriginalFile.putAll(sourcesMapping)
|
||||
|
||||
preProcessSources(sourceDestinationDir)
|
||||
}
|
||||
|
||||
private fun configureMultiModuleProject(
|
||||
moduleDependencies: ModulesTxt,
|
||||
jdk: JpsSdk<JpsDummyElement>?
|
||||
) {
|
||||
moduleDependencies.modules.forEach { module ->
|
||||
module.jpsModule = addModule(
|
||||
module.name,
|
||||
arrayOf(getAbsolutePath("${module.name}/src")),
|
||||
null,
|
||||
null,
|
||||
jdk
|
||||
)!!
|
||||
|
||||
val kotlinFacetSettings = module.kotlinFacetSettings
|
||||
if (kotlinFacetSettings != null) {
|
||||
module.jpsModule.container.setChild(
|
||||
JpsKotlinFacetModuleExtension.KIND,
|
||||
JpsKotlinFacetModuleExtension(kotlinFacetSettings!!)
|
||||
)
|
||||
}
|
||||
|
||||
val sourceDirName = "${module.name}/src"
|
||||
val filePrefix = "${module.name}_"
|
||||
val sourceDestinationDir = File(workDir, sourceDirName)
|
||||
val sourcesMapping = copyTestSources(testDataDir, sourceDestinationDir, filePrefix)
|
||||
mapWorkingToOriginalFile.putAll(sourcesMapping)
|
||||
|
||||
preProcessSources(sourceDestinationDir)
|
||||
}
|
||||
|
||||
moduleDependencies.dependencies.forEach {
|
||||
JpsModuleRootModificationUtil.addDependency(
|
||||
it.from.jpsModule, it.to.jpsModule,
|
||||
it.scope, it.exported
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
protected open fun addStdlib() {
|
||||
AbstractKotlinJpsBuildTestCase.addKotlinStdlibDependency(myProject)
|
||||
AbstractKotlinJpsBuildTestCase.addKotlinTestDependency(myProject)
|
||||
}
|
||||
|
||||
+1
-1
@@ -24,7 +24,7 @@ abstract class AbstractIncrementalJsJpsTest : AbstractIncrementalJpsTest() {
|
||||
super.tearDown()
|
||||
}
|
||||
|
||||
override fun configureDependencies() {
|
||||
override fun addStdlib() {
|
||||
AbstractKotlinJpsBuildTestCase.addKotlinJavaScriptStdlibDependency(myProject)
|
||||
}
|
||||
|
||||
|
||||
-4
@@ -5,10 +5,6 @@
|
||||
|
||||
package org.jetbrains.kotlin.jps.build
|
||||
|
||||
import org.jetbrains.kotlin.jps.build.dependeciestxt.DependenciesTxt
|
||||
import org.jetbrains.kotlin.jps.build.dependeciestxt.MppJpsIncTestsGenerator
|
||||
import java.io.File
|
||||
|
||||
abstract class AbstractMultiplatformJpsTest : AbstractIncrementalJpsTest() {
|
||||
override fun doTest(testDataPath: String) {
|
||||
// temporary ignore jps-plugin/testData/incremental/multiplatform/multiModule tests
|
||||
|
||||
+28
-17
@@ -6,6 +6,7 @@
|
||||
package org.jetbrains.kotlin.jps.build.dependeciestxt
|
||||
|
||||
import org.jetbrains.jps.model.java.JpsJavaDependencyScope
|
||||
import org.jetbrains.jps.model.module.JpsModule
|
||||
import org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments
|
||||
import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments
|
||||
import org.jetbrains.kotlin.cli.common.arguments.K2MetadataCompilerArguments
|
||||
@@ -22,7 +23,7 @@ import kotlin.reflect.full.memberProperties
|
||||
* Dependencies description file.
|
||||
* See [README.md] for more details.
|
||||
*/
|
||||
data class DependenciesTxt(
|
||||
data class ModulesTxt(
|
||||
val file: File,
|
||||
val fileName: String,
|
||||
val modules: List<Module>,
|
||||
@@ -62,6 +63,8 @@ data class DependenciesTxt(
|
||||
@Flag
|
||||
var editExpectActual: Boolean = false
|
||||
|
||||
lateinit var jpsModule: JpsModule
|
||||
|
||||
companion object {
|
||||
val flags: Map<String, KMutableProperty1<Module, Boolean>> = Module::class.memberProperties
|
||||
.filter { it.findAnnotation<Flag>() != null }
|
||||
@@ -98,17 +101,20 @@ class DependenciesTxtBuilder {
|
||||
*/
|
||||
class ModuleRef(name: String) {
|
||||
var defined: Boolean = false
|
||||
var actual: DependenciesTxt.Module = DependenciesTxt.Module(name)
|
||||
var actual: ModulesTxt.Module = ModulesTxt.Module(name)
|
||||
|
||||
override fun toString() = actual.name
|
||||
|
||||
fun build(index: Int): DependenciesTxt.Module {
|
||||
fun build(index: Int): ModulesTxt.Module {
|
||||
val result = actual
|
||||
result.index = index
|
||||
val kotlinFacetSettings = result.kotlinFacetSettings
|
||||
if (kotlinFacetSettings != null) {
|
||||
kotlinFacetSettings.implementedModuleNames =
|
||||
result.dependencies.filter { it.expectedBy }.map { it.to.name }
|
||||
result.dependencies.asSequence()
|
||||
.filter { it.expectedBy }
|
||||
.map { it.to.name }
|
||||
.toList()
|
||||
}
|
||||
return result
|
||||
}
|
||||
@@ -124,20 +130,20 @@ class DependenciesTxtBuilder {
|
||||
val expectedBy: Boolean,
|
||||
val exported: Boolean
|
||||
) {
|
||||
fun build(): DependenciesTxt.Dependency {
|
||||
fun build(): ModulesTxt.Dependency {
|
||||
if (expectedBy) check(to.actual.isCommonModule) { "$this: ${to.actual} is not common module" }
|
||||
return DependenciesTxt.Dependency(from.actual, to.actual, scope, expectedBy, exported)
|
||||
return ModulesTxt.Dependency(from.actual, to.actual, scope, expectedBy, exported)
|
||||
}
|
||||
}
|
||||
|
||||
fun readFile(file: File, fileTitle: String = file.toString()): DependenciesTxt {
|
||||
fun readFile(file: File, fileTitle: String = file.toString()): ModulesTxt {
|
||||
file.forEachLine { line ->
|
||||
parseDeclaration(line)
|
||||
}
|
||||
|
||||
// module.build() requires built dependencies
|
||||
val dependencies = dependencies.map { it.build() }
|
||||
return DependenciesTxt(
|
||||
return ModulesTxt(
|
||||
file,
|
||||
fileTitle,
|
||||
modules.values.mapIndexed { index, moduleRef -> moduleRef.build(index) },
|
||||
@@ -190,10 +196,10 @@ class DependenciesTxtBuilder {
|
||||
private fun moduleRef(name: String) =
|
||||
modules.getOrPut(name) { ModuleRef(name) }
|
||||
|
||||
private fun newModule(def: ValueWithFlags): DependenciesTxt.Module {
|
||||
private fun newModule(def: ValueWithFlags): ModulesTxt.Module {
|
||||
val name = def.value.trim()
|
||||
|
||||
val module = DependenciesTxt.Module(name)
|
||||
val module = ModulesTxt.Module(name)
|
||||
val kotlinFacetSettings = KotlinFacetSettings()
|
||||
module.kotlinFacetSettings = kotlinFacetSettings
|
||||
|
||||
@@ -213,7 +219,7 @@ class DependenciesTxtBuilder {
|
||||
"jvm" -> kotlinFacetSettings.compilerArguments = K2JVMCompilerArguments()
|
||||
"js" -> kotlinFacetSettings.compilerArguments = K2JSCompilerArguments()
|
||||
else -> {
|
||||
val flagProperty = DependenciesTxt.Module.flags[flag]
|
||||
val flagProperty = ModulesTxt.Module.flags[flag]
|
||||
if (flagProperty != null) flagProperty.set(module, true)
|
||||
else error("Unknown module flag `$flag`")
|
||||
}
|
||||
@@ -236,16 +242,21 @@ class DependenciesTxtBuilder {
|
||||
return null
|
||||
} else {
|
||||
var exported = false
|
||||
var scope = JpsJavaDependencyScope.COMPILE
|
||||
var scope: JpsJavaDependencyScope? = null
|
||||
var expectedBy = false
|
||||
|
||||
fun setScope(newScope: JpsJavaDependencyScope) {
|
||||
check(scope == null) { "`$this: $from -> $to` dependency is already flagged as $scope" }
|
||||
scope = newScope
|
||||
}
|
||||
|
||||
flags.forEach { flag ->
|
||||
when (flag) {
|
||||
"exported" -> exported = true
|
||||
"compile" -> scope = JpsJavaDependencyScope.COMPILE
|
||||
"test" -> scope = JpsJavaDependencyScope.TEST
|
||||
"runtime" -> scope = JpsJavaDependencyScope.RUNTIME
|
||||
"provided" -> scope = JpsJavaDependencyScope.PROVIDED
|
||||
"compile" -> setScope(JpsJavaDependencyScope.COMPILE)
|
||||
"test" -> setScope(JpsJavaDependencyScope.TEST)
|
||||
"runtime" -> setScope(JpsJavaDependencyScope.RUNTIME)
|
||||
"provided" -> setScope(JpsJavaDependencyScope.PROVIDED)
|
||||
"expectedBy" -> expectedBy = true
|
||||
else -> error("Unknown dependency flag `$flag`")
|
||||
}
|
||||
@@ -254,7 +265,7 @@ class DependenciesTxtBuilder {
|
||||
return DependencyBuilder(
|
||||
from = moduleRef(from),
|
||||
to = moduleRef(to),
|
||||
scope = scope,
|
||||
scope = scope ?: JpsJavaDependencyScope.COMPILE,
|
||||
expectedBy = expectedBy,
|
||||
exported = exported
|
||||
).also {
|
||||
+21
-21
@@ -25,8 +25,8 @@ fun actualizeMppJpsIncTestCaseDirs(rootDir: String, dir: String) {
|
||||
return
|
||||
}
|
||||
|
||||
class MppJpsIncTestsGenerator(val txt: DependenciesTxt, val testCaseDirProvider: (TestCase) -> File) {
|
||||
val DependenciesTxt.Module.capitalName get() = name.capitalize()
|
||||
class MppJpsIncTestsGenerator(val txt: ModulesTxt, val testCaseDirProvider: (TestCase) -> File) {
|
||||
val ModulesTxt.Module.capitalName get() = name.capitalize()
|
||||
|
||||
val testCases: List<TestCase>
|
||||
|
||||
@@ -84,15 +84,15 @@ class MppJpsIncTestsGenerator(val txt: DependenciesTxt, val testCaseDirProvider:
|
||||
}
|
||||
|
||||
data class ModuleContentSettings(
|
||||
val module: DependenciesTxt.Module,
|
||||
val module: ModulesTxt.Module,
|
||||
val serviceNameSuffix: String = "",
|
||||
val generateActualDeclarationsFor: List<DependenciesTxt.Module> = module.expectedBy.map { it.to },
|
||||
val generateActualDeclarationsFor: List<ModulesTxt.Module> = module.expectedBy.map { it.to },
|
||||
val generatePlatformDependent: Boolean = true,
|
||||
var generateKtFile: Boolean = true,
|
||||
var generateJavaFile: Boolean = true
|
||||
)
|
||||
|
||||
inner class EditingTestCase(val module: DependenciesTxt.Module, val changeJavaClass: Boolean) : TestCase() {
|
||||
inner class EditingTestCase(val module: ModulesTxt.Module, val changeJavaClass: Boolean) : TestCase() {
|
||||
override val name: String =
|
||||
if (changeJavaClass) "editing${module.capitalName}Java"
|
||||
else "editing${module.capitalName}Kotlin"
|
||||
@@ -171,7 +171,7 @@ class MppJpsIncTestsGenerator(val txt: DependenciesTxt, val testCaseDirProvider:
|
||||
|
||||
}
|
||||
|
||||
inner class EditingExpectActualTestCase(val commonModule: DependenciesTxt.Module) : TestCase() {
|
||||
inner class EditingExpectActualTestCase(val commonModule: ModulesTxt.Module) : TestCase() {
|
||||
override val name: String = "editing${commonModule.capitalName}ExpectActual"
|
||||
override val dir: File = testCaseDirProvider(this)
|
||||
|
||||
@@ -244,7 +244,7 @@ class MppJpsIncTestsGenerator(val txt: DependenciesTxt, val testCaseDirProvider:
|
||||
|
||||
abstract val dir: File
|
||||
|
||||
private val modules = mutableMapOf<DependenciesTxt.Module, ModuleContentSettings>()
|
||||
private val modules = mutableMapOf<ModulesTxt.Module, ModuleContentSettings>()
|
||||
|
||||
var step = 1
|
||||
val steps = mutableListOf<String>()
|
||||
@@ -255,7 +255,7 @@ class MppJpsIncTestsGenerator(val txt: DependenciesTxt, val testCaseDirProvider:
|
||||
step++
|
||||
}
|
||||
|
||||
var DependenciesTxt.Module.contentsSettings: ModuleContentSettings
|
||||
var ModulesTxt.Module.contentsSettings: ModuleContentSettings
|
||||
get() = modules.getOrPut(this) { ModuleContentSettings(this) }
|
||||
set(value) {
|
||||
modules[this] = value
|
||||
@@ -273,7 +273,7 @@ class MppJpsIncTestsGenerator(val txt: DependenciesTxt, val testCaseDirProvider:
|
||||
}
|
||||
}
|
||||
|
||||
private fun generateModuleContents(module: DependenciesTxt.Module) {
|
||||
private fun generateModuleContents(module: ModulesTxt.Module) {
|
||||
when {
|
||||
module.isCommonModule -> {
|
||||
// common module
|
||||
@@ -290,13 +290,13 @@ class MppJpsIncTestsGenerator(val txt: DependenciesTxt, val testCaseDirProvider:
|
||||
}
|
||||
}
|
||||
|
||||
private val DependenciesTxt.Module.serviceName
|
||||
private val ModulesTxt.Module.serviceName
|
||||
get() = "$capitalName${contentsSettings.serviceNameSuffix}"
|
||||
|
||||
private val DependenciesTxt.Module.javaClassName
|
||||
private val ModulesTxt.Module.javaClassName
|
||||
get() = "${serviceName}JavaClass"
|
||||
|
||||
protected fun serviceKtFile(module: DependenciesTxt.Module, fileNameSuffix: String = ""): File {
|
||||
protected fun serviceKtFile(module: ModulesTxt.Module, fileNameSuffix: String = ""): File {
|
||||
val suffix =
|
||||
if (module.isCommonModule) "${module.serviceName}Header"
|
||||
else "${module.name.capitalize()}${module.contentsSettings.serviceNameSuffix}Impl"
|
||||
@@ -304,30 +304,30 @@ class MppJpsIncTestsGenerator(val txt: DependenciesTxt, val testCaseDirProvider:
|
||||
return File(dir, "${module.indexedName}_service$suffix.kt$fileNameSuffix")
|
||||
}
|
||||
|
||||
fun serviceJavaFile(module: DependenciesTxt.Module, fileNameSuffix: String = ""): File {
|
||||
fun serviceJavaFile(module: ModulesTxt.Module, fileNameSuffix: String = ""): File {
|
||||
return File(dir, "${module.indexedName}_${module.javaClassName}.java$fileNameSuffix")
|
||||
}
|
||||
|
||||
private val DependenciesTxt.Module.platformDependentFunName: String
|
||||
private val ModulesTxt.Module.platformDependentFunName: String
|
||||
get() {
|
||||
check(isCommonModule)
|
||||
return "${name}_platformDependent$serviceName"
|
||||
}
|
||||
|
||||
private val DependenciesTxt.Module.platformIndependentFunName: String
|
||||
private val ModulesTxt.Module.platformIndependentFunName: String
|
||||
get() {
|
||||
check(isCommonModule)
|
||||
return "${name}_platformIndependent$serviceName"
|
||||
}
|
||||
|
||||
private val DependenciesTxt.Module.platformOnlyFunName: String
|
||||
private val ModulesTxt.Module.platformOnlyFunName: String
|
||||
get() {
|
||||
// platformOnly fun names already unique, so no module name prefix required
|
||||
return "${name}_platformOnly${contentsSettings.serviceNameSuffix}"
|
||||
}
|
||||
|
||||
protected fun generateCommonFile(
|
||||
module: DependenciesTxt.Module,
|
||||
module: ModulesTxt.Module,
|
||||
fileNameSuffix: String = ""
|
||||
) {
|
||||
val settings = module.contentsSettings
|
||||
@@ -343,7 +343,7 @@ class MppJpsIncTestsGenerator(val txt: DependenciesTxt, val testCaseDirProvider:
|
||||
}
|
||||
|
||||
protected fun generatePlatformFile(
|
||||
module: DependenciesTxt.Module,
|
||||
module: ModulesTxt.Module,
|
||||
fileNameSuffix: String = ""
|
||||
) {
|
||||
val isJvm = module.isJvmModule
|
||||
@@ -386,7 +386,7 @@ class MppJpsIncTestsGenerator(val txt: DependenciesTxt, val testCaseDirProvider:
|
||||
|
||||
// call all functions declared in this module and all of its dependencies recursively
|
||||
private fun StringBuilder.appendTestFun(
|
||||
module: DependenciesTxt.Module,
|
||||
module: ModulesTxt.Module,
|
||||
settings: ModuleContentSettings
|
||||
) {
|
||||
appendln()
|
||||
@@ -414,8 +414,8 @@ class MppJpsIncTestsGenerator(val txt: DependenciesTxt, val testCaseDirProvider:
|
||||
appendln("}")
|
||||
}
|
||||
|
||||
private fun DependenciesTxt.Module.collectDependenciesRecursivelyTo(
|
||||
collection: MutableCollection<DependenciesTxt.Module>,
|
||||
private fun ModulesTxt.Module.collectDependenciesRecursivelyTo(
|
||||
collection: MutableCollection<ModulesTxt.Module>,
|
||||
exportedOnly: Boolean = false
|
||||
) {
|
||||
dependencies.forEach {
|
||||
|
||||
+16
-16
@@ -1,5 +1,21 @@
|
||||
================ Step #1 =================
|
||||
|
||||
Building module5
|
||||
Exit code: NOTHING_DONE
|
||||
------------------------------------------
|
||||
Building module4
|
||||
Local cache for KotlinChunk<KotlinJvmModuleBuildTarget>(Module 'module4' production) are INVALID: actual=CacheVersion(version=777) -> expected=CacheVersion(version=9011001)
|
||||
Marked as dirty by Kotlin:
|
||||
module4/src/d.kt
|
||||
Cleaning output files:
|
||||
out/production/module4/META-INF/module4.kotlin_module
|
||||
out/production/module4/module4/D.class
|
||||
End of files
|
||||
Compiling files:
|
||||
module4/src/d.kt
|
||||
End of files
|
||||
Exit code: OK
|
||||
------------------------------------------
|
||||
Building module1
|
||||
Local cache for KotlinChunk<KotlinJvmModuleBuildTarget>(Module 'module1' production) are INVALID: actual=CacheVersion(version=777) -> expected=CacheVersion(version=9011001)
|
||||
Marked as dirty by Kotlin:
|
||||
@@ -39,20 +55,4 @@ Compiling files:
|
||||
module3/src/c.kt
|
||||
End of files
|
||||
Exit code: OK
|
||||
------------------------------------------
|
||||
Building module4
|
||||
Local cache for KotlinChunk<KotlinJvmModuleBuildTarget>(Module 'module4' production) are INVALID: actual=CacheVersion(version=777) -> expected=CacheVersion(version=9011001)
|
||||
Marked as dirty by Kotlin:
|
||||
module4/src/d.kt
|
||||
Cleaning output files:
|
||||
out/production/module4/META-INF/module4.kotlin_module
|
||||
out/production/module4/module4/D.class
|
||||
End of files
|
||||
Compiling files:
|
||||
module4/src/d.kt
|
||||
End of files
|
||||
Exit code: OK
|
||||
------------------------------------------
|
||||
Building module5
|
||||
Exit code: NOTHING_DONE
|
||||
------------------------------------------
|
||||
jps-plugin/testData/incremental/cacheVersionChanged/module1Modified/data-container-version-build.log
Vendored
+13
-13
@@ -6,6 +6,19 @@ Marked as dirty by Kotlin:
|
||||
module2/src/b.kt
|
||||
module3/src/c.kt
|
||||
module4/src/d.kt
|
||||
Building module5
|
||||
Exit code: NOTHING_DONE
|
||||
------------------------------------------
|
||||
Building module4
|
||||
Cleaning output files:
|
||||
out/production/module4/META-INF/module4.kotlin_module
|
||||
out/production/module4/module4/D.class
|
||||
End of files
|
||||
Compiling files:
|
||||
module4/src/d.kt
|
||||
End of files
|
||||
Exit code: OK
|
||||
------------------------------------------
|
||||
Building module1
|
||||
Cleaning output files:
|
||||
out/production/module1/META-INF/module1.kotlin_module
|
||||
@@ -36,17 +49,4 @@ Compiling files:
|
||||
module3/src/c.kt
|
||||
End of files
|
||||
Exit code: OK
|
||||
------------------------------------------
|
||||
Building module4
|
||||
Cleaning output files:
|
||||
out/production/module4/META-INF/module4.kotlin_module
|
||||
out/production/module4/module4/D.class
|
||||
End of files
|
||||
Compiling files:
|
||||
module4/src/d.kt
|
||||
End of files
|
||||
Exit code: OK
|
||||
------------------------------------------
|
||||
Building module5
|
||||
Exit code: NOTHING_DONE
|
||||
------------------------------------------
|
||||
@@ -1,5 +1,21 @@
|
||||
================ Step #1 =================
|
||||
|
||||
Building module5
|
||||
Exit code: NOTHING_DONE
|
||||
------------------------------------------
|
||||
Building module4
|
||||
Local cache for KotlinChunk<KotlinJvmModuleBuildTarget>(Module 'module4' production) are INVALID: actual=CacheVersion(version=777) -> expected=CacheVersion(version=9011001)
|
||||
Marked as dirty by Kotlin:
|
||||
module4/src/d.kt
|
||||
Cleaning output files:
|
||||
out/production/module4/META-INF/module4.kotlin_module
|
||||
out/production/module4/module4/D.class
|
||||
End of files
|
||||
Compiling files:
|
||||
module4/src/d.kt
|
||||
End of files
|
||||
Exit code: OK
|
||||
------------------------------------------
|
||||
Building module1
|
||||
Local cache for KotlinChunk<KotlinJvmModuleBuildTarget>(Module 'module1' production) are INVALID: actual=CacheVersion(version=777) -> expected=CacheVersion(version=9011001)
|
||||
Marked as dirty by Kotlin:
|
||||
@@ -22,6 +38,12 @@ Name expected
|
||||
|
||||
================ Step #2 =================
|
||||
|
||||
Building module5
|
||||
Exit code: NOTHING_DONE
|
||||
------------------------------------------
|
||||
Building module4
|
||||
Exit code: NOTHING_DONE
|
||||
------------------------------------------
|
||||
Building module1
|
||||
Compiling files:
|
||||
module1/src/a.kt
|
||||
@@ -54,20 +76,4 @@ Compiling files:
|
||||
module3/src/c.kt
|
||||
End of files
|
||||
Exit code: OK
|
||||
------------------------------------------
|
||||
Building module4
|
||||
Local cache for KotlinChunk<KotlinJvmModuleBuildTarget>(Module 'module4' production) are INVALID: actual=CacheVersion(version=777) -> expected=CacheVersion(version=9011001)
|
||||
Marked as dirty by Kotlin:
|
||||
module4/src/d.kt
|
||||
Cleaning output files:
|
||||
out/production/module4/META-INF/module4.kotlin_module
|
||||
out/production/module4/module4/D.class
|
||||
End of files
|
||||
Compiling files:
|
||||
module4/src/d.kt
|
||||
End of files
|
||||
Exit code: OK
|
||||
------------------------------------------
|
||||
Building module5
|
||||
Exit code: NOTHING_DONE
|
||||
------------------------------------------
|
||||
Vendored
+29
-13
@@ -7,6 +7,19 @@ Marked as dirty by Kotlin:
|
||||
module2/src/b.kt
|
||||
module3/src/c.kt
|
||||
module4/src/d.kt
|
||||
Building module5
|
||||
Exit code: NOTHING_DONE
|
||||
------------------------------------------
|
||||
Building module4
|
||||
Cleaning output files:
|
||||
out/production/module4/META-INF/module4.kotlin_module
|
||||
out/production/module4/module4/D.class
|
||||
End of files
|
||||
Compiling files:
|
||||
module4/src/d.kt
|
||||
End of files
|
||||
Exit code: OK
|
||||
------------------------------------------
|
||||
Building module1
|
||||
Cleaning output files:
|
||||
out/production/module1/META-INF/module1.kotlin_module
|
||||
@@ -25,6 +38,22 @@ Name expected
|
||||
|
||||
================ Step #2 =================
|
||||
|
||||
Building module5
|
||||
Exit code: NOTHING_DONE
|
||||
------------------------------------------
|
||||
Building module4
|
||||
Local cache for KotlinChunk<KotlinJvmModuleBuildTarget>(Module 'module4' production) are INVALID: actual=null -> expected=CacheVersion(version=9011001)
|
||||
Marked as dirty by Kotlin:
|
||||
module4/src/d.kt
|
||||
Cleaning output files:
|
||||
out/production/module4/META-INF/module4.kotlin_module
|
||||
out/production/module4/module4/D.class
|
||||
End of files
|
||||
Compiling files:
|
||||
module4/src/d.kt
|
||||
End of files
|
||||
Exit code: OK
|
||||
------------------------------------------
|
||||
Building module1
|
||||
Compiling files:
|
||||
module1/src/a.kt
|
||||
@@ -51,17 +80,4 @@ Compiling files:
|
||||
module3/src/c.kt
|
||||
End of files
|
||||
Exit code: OK
|
||||
------------------------------------------
|
||||
Building module4
|
||||
Cleaning output files:
|
||||
out/production/module4/META-INF/module4.kotlin_module
|
||||
out/production/module4/module4/D.class
|
||||
End of files
|
||||
Compiling files:
|
||||
module4/src/d.kt
|
||||
End of files
|
||||
Exit code: OK
|
||||
------------------------------------------
|
||||
Building module5
|
||||
Exit code: NOTHING_DONE
|
||||
------------------------------------------
|
||||
+10
-10
@@ -16,16 +16,6 @@ Exit code: ADDITIONAL_PASS_REQUIRED
|
||||
------------------------------------------
|
||||
Exit code: NOTHING_DONE
|
||||
------------------------------------------
|
||||
Building module2
|
||||
Cleaning output files:
|
||||
out/production/module2/META-INF/module2.kotlin_module
|
||||
out/production/module2/b/BKt.class
|
||||
End of files
|
||||
Compiling files:
|
||||
module2/src/b.kt
|
||||
End of files
|
||||
Exit code: OK
|
||||
------------------------------------------
|
||||
Building module3
|
||||
Cleaning output files:
|
||||
out/production/module3/META-INF/module3.kotlin_module
|
||||
@@ -36,3 +26,13 @@ Compiling files:
|
||||
End of files
|
||||
Exit code: OK
|
||||
------------------------------------------
|
||||
Building module2
|
||||
Cleaning output files:
|
||||
out/production/module2/META-INF/module2.kotlin_module
|
||||
out/production/module2/b/BKt.class
|
||||
End of files
|
||||
Compiling files:
|
||||
module2/src/b.kt
|
||||
End of files
|
||||
Exit code: OK
|
||||
------------------------------------------
|
||||
+11
-11
@@ -16,17 +16,6 @@ Exit code: ADDITIONAL_PASS_REQUIRED
|
||||
------------------------------------------
|
||||
Exit code: NOTHING_DONE
|
||||
------------------------------------------
|
||||
Building module2
|
||||
Cleaning output files:
|
||||
out/production/module2/module2.js
|
||||
out/production/module2/module2.meta.js
|
||||
out/production/module2/module2/b/b.kjsm
|
||||
End of files
|
||||
Compiling files:
|
||||
module2/src/b.kt
|
||||
End of files
|
||||
Exit code: OK
|
||||
------------------------------------------
|
||||
Building module3
|
||||
Cleaning output files:
|
||||
out/production/module3/module3.js
|
||||
@@ -37,4 +26,15 @@ Compiling files:
|
||||
module3/src/c.kt
|
||||
End of files
|
||||
Exit code: OK
|
||||
------------------------------------------
|
||||
Building module2
|
||||
Cleaning output files:
|
||||
out/production/module2/module2.js
|
||||
out/production/module2/module2.meta.js
|
||||
out/production/module2/module2/b/b.kjsm
|
||||
End of files
|
||||
Compiling files:
|
||||
module2/src/b.kt
|
||||
End of files
|
||||
Exit code: OK
|
||||
------------------------------------------
|
||||
Reference in New Issue
Block a user