diff --git a/build.gradle.kts b/build.gradle.kts index baa50d31b70..210ee60d215 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -696,6 +696,7 @@ tasks { register("kaptTests") { dependsOn(":kotlin-annotation-processing:test") + dependsOn(":kotlin-annotation-processing:testJdk11") dependsOn(":kotlin-annotation-processing-base:test") dependsOn(":kotlin-annotation-processing-cli:test") } diff --git a/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt b/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt index cbdd0604c9d..80d8d073475 100644 --- a/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt +++ b/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt @@ -21,6 +21,8 @@ import org.jetbrains.kotlin.fir.plugin.runners.AbstractFirPluginDiagnosticTest import org.jetbrains.kotlin.generators.TestGroup import org.jetbrains.kotlin.generators.generateTestGroupSuiteWithJUnit5 import org.jetbrains.kotlin.generators.impl.generateTestGroupSuite +import org.jetbrains.kotlin.generators.model.AnnotationModel +import org.jetbrains.kotlin.generators.model.annotation import org.jetbrains.kotlin.incremental.* import org.jetbrains.kotlin.jvm.abi.* import org.jetbrains.kotlin.kapt.cli.test.AbstractArgumentParsingTest @@ -39,6 +41,7 @@ import org.jetbrains.kotlinx.atomicfu.AbstractAtomicfuJvmIrTest import org.jetbrains.kotlinx.serialization.AbstractSerializationIrBytecodeListingTest import org.jetbrains.kotlinx.serialization.AbstractSerializationPluginBytecodeListingTest import org.jetbrains.kotlinx.serialization.AbstractSerializationPluginDiagnosticTest +import org.junit.jupiter.api.Tag fun main(args: Array) { System.setProperty("java.awt.headless", "true") @@ -448,11 +451,12 @@ fun main(args: Array) { } testGroup("plugins/kapt3/kapt3-compiler/tests-gen", "plugins/kapt3/kapt3-compiler/testData") { - testClass { + val annotations = listOf(annotation(Tag::class.java, "IgnoreJDK11")) + testClass(annotations = annotations) { model("kotlinRunner") } - testClass { + testClass(annotations = annotations) { model("kotlinRunner") } diff --git a/plugins/kapt3/kapt3-compiler/build.gradle.kts b/plugins/kapt3/kapt3-compiler/build.gradle.kts index 06473e7f2dd..81d373dc312 100644 --- a/plugins/kapt3/kapt3-compiler/build.gradle.kts +++ b/plugins/kapt3/kapt3-compiler/build.gradle.kts @@ -54,15 +54,24 @@ sourceSets { testsJar {} -projectTest(parallel = true) { - useJUnitPlatform() - workingDir = rootDir - dependsOn(":dist") +kaptTestTask("test", JavaLanguageVersion.of(8)) +kaptTestTask("testJdk11", JavaLanguageVersion.of(11)) + +fun Project.kaptTestTask(name: String, javaLanguageVersion: JavaLanguageVersion) { + val service = extensions.getByType() + + projectTest(taskName = name, parallel = true) { + useJUnitPlatform { + excludeTags = setOf("IgnoreJDK11") + } + workingDir = rootDir + dependsOn(":dist") + javaLauncher.set(service.launcherFor { languageVersion.set(javaLanguageVersion) }) + } } publish() runtimeJar() - sourcesJar() javadocJar() diff --git a/plugins/kapt3/kapt3-compiler/test/org/jetbrains/kotlin/kapt3/test/handlers/ClassFileToSourceKaptStubHandler.kt b/plugins/kapt3/kapt3-compiler/test/org/jetbrains/kotlin/kapt3/test/handlers/ClassFileToSourceKaptStubHandler.kt index 41b85bffd59..d4be6cee892 100644 --- a/plugins/kapt3/kapt3-compiler/test/org/jetbrains/kotlin/kapt3/test/handlers/ClassFileToSourceKaptStubHandler.kt +++ b/plugins/kapt3/kapt3-compiler/test/org/jetbrains/kotlin/kapt3/test/handlers/ClassFileToSourceKaptStubHandler.kt @@ -12,17 +12,20 @@ import com.sun.tools.javac.util.Log import org.jetbrains.kotlin.kapt3.base.javac.KaptJavaLogBase import org.jetbrains.kotlin.kapt3.prettyPrint import org.jetbrains.kotlin.kapt3.test.KaptContextBinaryArtifact -import org.jetbrains.kotlin.kapt3.test.old.AbstractClassFileToSourceStubConverterTest -import org.jetbrains.kotlin.kapt3.test.old.AbstractKotlinKapt3Test import org.jetbrains.kotlin.kapt3.test.KaptTestDirectives.EXPECTED_ERROR import org.jetbrains.kotlin.kapt3.test.KaptTestDirectives.NON_EXISTENT_CLASS import org.jetbrains.kotlin.kapt3.test.KaptTestDirectives.NO_VALIDATION +import org.jetbrains.kotlin.kapt3.test.messageCollectorProvider import org.jetbrains.kotlin.test.model.TestModule import org.jetbrains.kotlin.test.services.TestServices import org.jetbrains.kotlin.test.util.trimTrailingWhitespacesAndAddNewlineAtEOF import java.util.* class ClassFileToSourceKaptStubHandler(testServices: TestServices) : BaseKaptHandler(testServices) { + companion object { + const val FILE_SEPARATOR = "\n\n////////////////////\n\n" + } + override fun processModule(module: TestModule, info: KaptContextBinaryArtifact) { val generateNonExistentClass = NON_EXISTENT_CLASS in module.directives val validate = NO_VALIDATION !in module.directives @@ -37,11 +40,11 @@ class ClassFileToSourceKaptStubHandler(testServices: TestServices) : BaseKaptHan val actualRaw = convertedFiles .sortedBy { it.sourceFile.name } - .joinToString(AbstractKotlinKapt3Test.FILE_SEPARATOR) { it.prettyPrint(kaptContext.context) } + .joinToString(FILE_SEPARATOR) { it.prettyPrint(kaptContext.context) } val actual = StringUtil.convertLineSeparators(actualRaw.trim { it <= ' ' }) .trimTrailingWhitespacesAndAddNewlineAtEOF() - .let { AbstractClassFileToSourceStubConverterTest.removeMetadataAnnotationContents(it) } + .let { removeMetadataAnnotationContents(it) } if (kaptContext.compiler.shouldStop(CompileStates.CompileState.ENTER)) { val log = Log.instance(kaptContext.context) as KaptJavaLogBase @@ -73,7 +76,7 @@ class ClassFileToSourceKaptStubHandler(testServices: TestServices) : BaseKaptHan val expectedErrorsStr = expectedErrors.joinToString(lineSeparator) { it.toDirectiveView() } if (expectedErrorsStr != actualErrorsStr) { assertions.assertEquals(expectedErrorsStr, actualErrorsStr) { - System.err.println(AbstractKotlinKapt3Test.ERR_BYTE_STREAM.toString("UTF8")) + System.err.println(testServices.messageCollectorProvider.getErrorStream(module).toString("UTF8")) "Expected error matching failed" } } diff --git a/plugins/kapt3/kapt3-compiler/tests-gen/org/jetbrains/kotlin/kapt3/test/runners/IrKotlinKaptContextTestGenerated.java b/plugins/kapt3/kapt3-compiler/tests-gen/org/jetbrains/kotlin/kapt3/test/runners/IrKotlinKaptContextTestGenerated.java index 4f3086770b4..c0a3321137e 100644 --- a/plugins/kapt3/kapt3-compiler/tests-gen/org/jetbrains/kotlin/kapt3/test/runners/IrKotlinKaptContextTestGenerated.java +++ b/plugins/kapt3/kapt3-compiler/tests-gen/org/jetbrains/kotlin/kapt3/test/runners/IrKotlinKaptContextTestGenerated.java @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.kapt3.test.runners; import com.intellij.testFramework.TestDataPath; import org.jetbrains.kotlin.test.util.KtTestUtil; +import org.junit.jupiter.api.Tag; import org.jetbrains.kotlin.test.TargetBackend; import org.jetbrains.kotlin.test.TestMetadata; import org.junit.jupiter.api.Nested; @@ -19,6 +20,7 @@ import java.util.regex.Pattern; @SuppressWarnings("all") @TestMetadata("plugins/kapt3/kapt3-compiler/testData/kotlinRunner") @TestDataPath("$PROJECT_ROOT") +@Tag("IgnoreJDK11") public class IrKotlinKaptContextTestGenerated extends AbstractIrKotlinKaptContextTest { @Test public void testAllFilesPresentInKotlinRunner() throws Exception {