[KAPT] Add additional test tasks for running tests on JDK 11

This commit is contained in:
Dmitriy Novozhilov
2022-07-13 10:40:04 +03:00
committed by teamcity
parent 9c41e75802
commit 8b960de76a
5 changed files with 31 additions and 12 deletions
+1
View File
@@ -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")
}
@@ -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<String>) {
System.setProperty("java.awt.headless", "true")
@@ -448,11 +451,12 @@ fun main(args: Array<String>) {
}
testGroup("plugins/kapt3/kapt3-compiler/tests-gen", "plugins/kapt3/kapt3-compiler/testData") {
testClass<AbstractKotlinKaptContextTest> {
val annotations = listOf(annotation(Tag::class.java, "IgnoreJDK11"))
testClass<AbstractKotlinKaptContextTest>(annotations = annotations) {
model("kotlinRunner")
}
testClass<AbstractIrKotlinKaptContextTest> {
testClass<AbstractIrKotlinKaptContextTest>(annotations = annotations) {
model("kotlinRunner")
}
+14 -5
View File
@@ -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<JavaToolchainService>()
projectTest(taskName = name, parallel = true) {
useJUnitPlatform {
excludeTags = setOf("IgnoreJDK11")
}
workingDir = rootDir
dependsOn(":dist")
javaLauncher.set(service.launcherFor { languageVersion.set(javaLanguageVersion) })
}
}
publish()
runtimeJar()
sourcesJar()
javadocJar()
@@ -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"
}
}
@@ -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 {