From fb01b46f6a5095a8757823f58918945c6be4b4a1 Mon Sep 17 00:00:00 2001 From: Nikita Bobko Date: Thu, 23 Dec 2021 16:26:36 +0100 Subject: [PATCH] GenerateTests.kt: restore Kotlin JPS plugin tests schema --- jps/jps-plugin/build.gradle.kts | 10 ++ .../kotlin/jps/GenerateJpsPluginTests.kt | 91 +++++++++++++++++++ .../dependeciestxt/MppJpsIncTestsGenerator.kt | 21 ----- 3 files changed, 101 insertions(+), 21 deletions(-) create mode 100644 jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/GenerateJpsPluginTests.kt diff --git a/jps/jps-plugin/build.gradle.kts b/jps/jps-plugin/build.gradle.kts index 60079fe389e..f75bee5d22a 100644 --- a/jps/jps-plugin/build.gradle.kts +++ b/jps/jps-plugin/build.gradle.kts @@ -5,6 +5,15 @@ plugins { val compilerModules: Array 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")) diff --git a/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/GenerateJpsPluginTests.kt b/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/GenerateJpsPluginTests.kt new file mode 100644 index 00000000000..2b33507af44 --- /dev/null +++ b/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/GenerateJpsPluginTests.kt @@ -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) { + System.setProperty("java.awt.headless", "true") + + generateTestGroupSuite(args) { + testGroup("jps/jps-plugin/jps-tests/test", "jps/jps-plugin/testData") { + testClass { + 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 { + model("incremental/multiModule/common", extension = null, excludeParentDirs = true) + } + + testClass { + model( + "incremental/multiModule/multiplatform/withGeneratedContent", extension = null, excludeParentDirs = true, + testClassName = "MultiplatformMultiModule", recursive = true + ) + } + + testClass { + model("incremental/lookupTracker/jvm", extension = null, recursive = false) + } + testClass { + model("incremental/lookupTracker/js", extension = null, recursive = false) + } + testClass { + // todo: investigate why lookups are different from non-klib js + model("incremental/lookupTracker/jsKlib", extension = null, recursive = false) + } + + testClass { + model("incremental/lazyKotlinCaches", extension = null, excludeParentDirs = true) + model("incremental/changeIncrementalOption", extension = null, excludeParentDirs = true) + } + + testClass { + model("incremental/cacheVersionChanged", extension = null, excludeParentDirs = true) + } + + testClass { + 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 { + commonProtoComparisonTests() + model("comparison/jvmOnly", extension = null, excludeParentDirs = true) + } + + testClass { + commonProtoComparisonTests() + model("comparison/jsOnly", extension = null, excludeParentDirs = true) + } + } + } +} diff --git a/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/dependeciestxt/MppJpsIncTestsGenerator.kt b/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/dependeciestxt/MppJpsIncTestsGenerator.kt index 4d70f73a4e2..d6c3ceca9ac 100644 --- a/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/dependeciestxt/MppJpsIncTestsGenerator.kt +++ b/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/dependeciestxt/MppJpsIncTestsGenerator.kt @@ -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() }