GenerateTests.kt: restore Kotlin JPS plugin tests schema

This commit is contained in:
Nikita Bobko
2021-12-23 16:26:36 +01:00
parent 3daec9b9ce
commit fb01b46f6a
3 changed files with 101 additions and 21 deletions
+10
View File
@@ -5,6 +5,15 @@ plugins {
val compilerModules: Array<String> by rootProject.extra
val generateTests by generator("org.jetbrains.kotlin.jps.GenerateJpsPluginTestsKt") {
javaLauncher.set(
javaToolchains.launcherFor {
languageVersion.set(JavaLanguageVersion.of(11))
}
)
}
dependencies {
compile(project(":kotlin-build-common"))
compile(project(":core:descriptors"))
@@ -14,6 +23,7 @@ dependencies {
compile(project(":daemon-common-new"))
compile(projectRuntimeJar(":kotlin-daemon-client"))
compile(projectRuntimeJar(":kotlin-daemon"))
testImplementation(projectTests(":generators:test-generator"))
compile(project(":compiler:frontend.java"))
compile(project(":js:js.frontend"))
compile(projectRuntimeJar(":kotlin-preloader"))
@@ -0,0 +1,91 @@
/*
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.jps
import org.jetbrains.kotlin.generators.TestGroup
import org.jetbrains.kotlin.generators.impl.generateTestGroupSuite
import org.jetbrains.kotlin.jps.build.*
import org.jetbrains.kotlin.jps.incremental.AbstractJsProtoComparisonTest
import org.jetbrains.kotlin.jps.incremental.AbstractJvmProtoComparisonTest
import org.jetbrains.kotlin.test.TargetBackend
fun main(args: Array<String>) {
System.setProperty("java.awt.headless", "true")
generateTestGroupSuite(args) {
testGroup("jps/jps-plugin/jps-tests/test", "jps/jps-plugin/testData") {
testClass<AbstractIncrementalJvmJpsTest> {
model("incremental/multiModule/common", extension = null, excludeParentDirs = true, targetBackend = TargetBackend.JVM_IR)
model("incremental/multiModule/jvm", extension = null, excludeParentDirs = true, targetBackend = TargetBackend.JVM_IR)
model(
"incremental/multiModule/multiplatform/custom", extension = null, excludeParentDirs = true,
targetBackend = TargetBackend.JVM_IR
)
model("incremental/pureKotlin", extension = null, recursive = false, targetBackend = TargetBackend.JVM_IR)
model("incremental/withJava", extension = null, excludeParentDirs = true, targetBackend = TargetBackend.JVM_IR)
model("incremental/inlineFunCallSite", extension = null, excludeParentDirs = true, targetBackend = TargetBackend.JVM_IR)
model(
"incremental/classHierarchyAffected", extension = null, excludeParentDirs = true, targetBackend = TargetBackend.JVM_IR
)
}
testClass<AbstractIncrementalJsJpsTest> {
model("incremental/multiModule/common", extension = null, excludeParentDirs = true)
}
testClass<AbstractMultiplatformJpsTestWithGeneratedContent> {
model(
"incremental/multiModule/multiplatform/withGeneratedContent", extension = null, excludeParentDirs = true,
testClassName = "MultiplatformMultiModule", recursive = true
)
}
testClass<AbstractJvmLookupTrackerTest> {
model("incremental/lookupTracker/jvm", extension = null, recursive = false)
}
testClass<AbstractJsLookupTrackerTest> {
model("incremental/lookupTracker/js", extension = null, recursive = false)
}
testClass<AbstractJsKlibLookupTrackerTest> {
// todo: investigate why lookups are different from non-klib js
model("incremental/lookupTracker/jsKlib", extension = null, recursive = false)
}
testClass<AbstractIncrementalLazyCachesTest> {
model("incremental/lazyKotlinCaches", extension = null, excludeParentDirs = true)
model("incremental/changeIncrementalOption", extension = null, excludeParentDirs = true)
}
testClass<AbstractIncrementalCacheVersionChangedTest> {
model("incremental/cacheVersionChanged", extension = null, excludeParentDirs = true)
}
testClass<AbstractDataContainerVersionChangedTest> {
model("incremental/cacheVersionChanged", extension = null, excludeParentDirs = true)
}
}
testGroup("jps/jps-plugin/jps-tests/test", "jps/jps-plugin/testData") {
fun TestGroup.TestClass.commonProtoComparisonTests() {
model("comparison/classSignatureChange", extension = null, excludeParentDirs = true)
model("comparison/classPrivateOnlyChange", extension = null, excludeParentDirs = true)
model("comparison/classMembersOnlyChanged", extension = null, excludeParentDirs = true)
model("comparison/packageMembers", extension = null, excludeParentDirs = true)
model("comparison/unchanged", extension = null, excludeParentDirs = true)
}
testClass<AbstractJvmProtoComparisonTest> {
commonProtoComparisonTests()
model("comparison/jvmOnly", extension = null, excludeParentDirs = true)
}
testClass<AbstractJsProtoComparisonTest> {
commonProtoComparisonTests()
model("comparison/jsOnly", extension = null, excludeParentDirs = true)
}
}
}
}
@@ -8,27 +8,6 @@ package org.jetbrains.kotlin.jps.build.dependeciestxt
import java.io.File
import java.util.*
/**
* Utility for generating common/platform module stub contents based on it's dependencies.
*/
fun actualizeMppJpsIncTestCaseDirs(rootDir: String, dir: String) {
val rootDirFile = File("$rootDir/$dir")
check(rootDirFile.isDirectory) { "`$rootDirFile` is not a directory" }
rootDirFile.listFiles { it: File -> it.isDirectory }.forEach { dirFile ->
val dependenciesTxtFile = File(dirFile, "dependencies.txt")
if (dependenciesTxtFile.exists()) {
val fileTitle = "$dir/${dirFile.name}/dependencies.txt"
val dependenciesTxt = ModulesTxtBuilder().readFile(dependenciesTxtFile, fileTitle)
MppJpsIncTestsGenerator(dependenciesTxt) { File(dirFile, it.name) }
.actualizeTestCasesDirs(dirFile)
}
}
return
}
class MppJpsIncTestsGenerator(val txt: ModulesTxt, val testCaseDirProvider: (TestCase) -> File) {
val ModulesTxt.Module.capitalName get() = name.replaceFirstChar { if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString() }