From 8991c78ae6432df764e67b0337b7a1e1a96a0681 Mon Sep 17 00:00:00 2001 From: Yahor Berdnikau Date: Thu, 28 Oct 2021 11:46:22 +0200 Subject: [PATCH] Migrate only Kapt tests to new test dsl. ^KT-45745 In Progress --- .../jetbrains/kotlin/gradle/Kapt3AndroidIT.kt | 32 +- .../org/jetbrains/kotlin/gradle/Kapt3IT.kt | 1464 +++++++++-------- .../annotationProcessorAsFqName/build.gradle | 17 +- .../gradle.properties | 1 - .../testProject/kapt2/arguments/build.gradle | 14 +- .../kapt2/arguments/gradle.properties | 1 - .../kapt2/autoService/build.gradle | 25 - .../kapt2/autoService/processor/build.gradle | 9 - .../src/main/kotlin/processor/MyProcessor.kt | 28 - .../kapt2/autoService/settings.gradle | 1 - .../src/main/kotlin/annotation/ProcessThis.kt | 3 - .../src/main/kotlin/model/Model.kt | 17 - .../kapt2/generatedDirUpToDate/build.gradle | 18 +- .../generatedDirUpToDate/gradle.properties | 1 - .../kapt2/incrementalRebuild/build.gradle | 16 +- .../kapt2/inheritedAnnotations/build.gradle | 15 +- .../inheritedAnnotations/gradle.properties | 1 - .../kapt2/javacIsLoadedOnce/build.gradle | 10 - .../kapt2/javacIsLoadedOnce/gradle.properties | 1 - .../javacIsLoadedOnce/module1/build.gradle | 6 +- .../javacIsLoadedOnce/module2/build.gradle | 6 +- .../kapt2/jpms-module/build.gradle | 17 +- .../kapt2/jpms-module/gradle.properties | 1 - .../kapt2/kaptAvoidance/settings.gradle | 14 +- .../kapt2/kaptOutputKotlinCode/build.gradle | 14 +- .../kapt2/kaptSkipped/build.gradle | 16 +- .../kapt2/kt18799/app/build.gradle | 6 +- .../testProject/kapt2/kt18799/build.gradle | 10 - .../kapt2/kt19179/api/build.gradle | 5 +- .../kapt2/kt19179/app/build.gradle | 6 +- .../testProject/kapt2/kt19179/build.gradle | 11 - .../kapt2/kt19179/processor/build.gradle | 6 +- .../annotation-processor/build.gradle | 4 +- .../localAnnotationProcessor/build.gradle | 10 - .../example/build.gradle | 9 +- .../gradle.properties | 1 - .../kapt2/locationMapping/build.gradle | 16 +- .../testProject/kapt2/nokapt/build.gradle | 14 +- .../testProject/kapt2/simple/build.gradle | 16 +- .../kapt2/simple/gradle.properties | 1 - .../testProject/kapt2/simple/settings.gradle | 4 +- .../testProject/kotlinProject/settings.gradle | 1 + 42 files changed, 877 insertions(+), 991 deletions(-) delete mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/annotationProcessorAsFqName/gradle.properties delete mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/arguments/gradle.properties delete mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/autoService/build.gradle delete mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/autoService/processor/build.gradle delete mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/autoService/processor/src/main/kotlin/processor/MyProcessor.kt delete mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/autoService/settings.gradle delete mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/autoService/src/main/kotlin/annotation/ProcessThis.kt delete mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/autoService/src/main/kotlin/model/Model.kt delete mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/generatedDirUpToDate/gradle.properties delete mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/inheritedAnnotations/gradle.properties delete mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/jpms-module/gradle.properties delete mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/localAnnotationProcessor/gradle.properties delete mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/simple/gradle.properties diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3AndroidIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3AndroidIT.kt index b7c9cb7211e..7cc29f88b04 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3AndroidIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3AndroidIT.kt @@ -134,16 +134,29 @@ class Kapt3Android70IT : Kapt3AndroidIT() { } } -class Kapt3Android42IT : Kapt3BaseIT() { +class Kapt3Android42IT : BaseGradleIT() { + companion object { + private val KAPT_SUCCESSFUL_REGEX = "Annotation processing complete, errors: 0".toRegex() + } + + private fun kaptOptions(): KaptOptions = + KaptOptions(verbose = true, useWorkers = false) + + private fun CompiledProject.assertKaptSuccessful() { + KAPT_SUCCESSFUL_REGEX.findAll(this.output).count() > 0 + } + override val defaultGradleVersion: GradleVersionRequired get() = GradleVersionRequired.AtLeast("6.7.1") override fun defaultBuildOptions(): BuildOptions = super.defaultBuildOptions().copy( + kaptOptions = kaptOptions(), + warningMode = WarningMode.Summary, androidHome = KtTestUtil.findAndroidSdk(), androidGradlePluginVersion = AGPVersion.v4_2_0 ) - + /** Regression test for https://youtrack.jetbrains.com/issue/KT-44020. */ @Test fun testDatabindingWithAndroidX() { @@ -156,11 +169,24 @@ class Kapt3Android42IT : Kapt3BaseIT() { } } -abstract class Kapt3AndroidIT : Kapt3BaseIT() { +abstract class Kapt3AndroidIT : BaseGradleIT() { + companion object { + private val KAPT_SUCCESSFUL_REGEX = "Annotation processing complete, errors: 0".toRegex() + } + + protected open fun kaptOptions(): KaptOptions = + KaptOptions(verbose = true, useWorkers = false) + + fun CompiledProject.assertKaptSuccessful() { + KAPT_SUCCESSFUL_REGEX.findAll(this.output).count() > 0 + } + protected abstract val androidGradlePluginVersion: AGPVersion override fun defaultBuildOptions() = super.defaultBuildOptions().copy( + kaptOptions = kaptOptions(), + warningMode = WarningMode.Summary, androidHome = KtTestUtil.findAndroidSdk(), androidGradlePluginVersion = androidGradlePluginVersion ) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt index 257a402b368..763551e184e 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt @@ -16,834 +16,910 @@ package org.jetbrains.kotlin.gradle +import org.gradle.api.JavaVersion import org.gradle.api.logging.LogLevel import org.gradle.api.logging.configuration.WarningMode +import org.gradle.testkit.runner.BuildResult +import org.gradle.util.GradleVersion import org.jetbrains.kotlin.gradle.tasks.USING_JVM_INCREMENTAL_COMPILATION_MESSAGE -import org.jetbrains.kotlin.gradle.util.* -import org.junit.Assert -import org.junit.Assume -import org.junit.Ignore -import org.junit.Test -import java.io.File +import org.jetbrains.kotlin.gradle.testbase.* +import org.jetbrains.kotlin.gradle.util.addBeforeSubstring +import org.jetbrains.kotlin.gradle.util.checkedReplace +import org.jetbrains.kotlin.gradle.util.testResolveAllConfigurations +import org.junit.jupiter.api.Disabled +import org.junit.jupiter.api.DisplayName +import java.nio.file.Files import java.util.regex.Pattern import java.util.zip.ZipFile import java.util.zip.ZipOutputStream -import kotlin.test.assertNotNull -import kotlin.test.assertNull +import kotlin.io.path.deleteExisting +import kotlin.io.path.outputStream +import kotlin.test.assertEquals import kotlin.test.assertTrue -abstract class Kapt3BaseIT : BaseGradleIT() { +@SimpleGradlePluginTests +abstract class Kapt3BaseIT : KGPBaseTest() { companion object { - private val KAPT_SUCCESSFUL_REGEX = "Annotation processing complete, errors: 0".toRegex() + private const val KAPT_SUCCESSFUL_MESSAGE = "Annotation processing complete, errors: 0" } - override fun defaultBuildOptions(): BuildOptions = - super.defaultBuildOptions().copy(kaptOptions = kaptOptions(), warningMode = WarningMode.Summary) + override val defaultBuildOptions: BuildOptions = super.defaultBuildOptions + .copy( + kaptOptions = this.kaptOptions(), + warningMode = WarningMode.Summary + ) - protected open fun kaptOptions(): KaptOptions = - KaptOptions(verbose = true, useWorkers = false) + protected open fun kaptOptions(): BuildOptions.KaptOptions = BuildOptions.KaptOptions( + verbose = true, + useWorkers = false + ) - fun CompiledProject.assertKaptSuccessful() { - KAPT_SUCCESSFUL_REGEX.findAll(this.output).count() > 0 + fun BuildResult.assertKaptSuccessful() { + val kaptSuccessfulMessagesCount = output + .lineSequence() + .filter { it.contains(KAPT_SUCCESSFUL_MESSAGE) } + .count() + assert(kaptSuccessfulMessagesCount > 0) { + printBuildOutput() + "Kapt hasn't done any processing" + } } + + protected val String.withPrefix get() = "kapt2/$this" } +@DisplayName("Kapt executing via workers") open class Kapt3WorkersIT : Kapt3IT() { - override fun kaptOptions(): KaptOptions = + override fun kaptOptions(): BuildOptions.KaptOptions = super.kaptOptions().copy(useWorkers = true) - @Test - fun testJavacIsLoadedOnce() { - val project = - Project("javacIsLoadedOnce", directoryPrefix = "kapt2") - project.build("build") { - assertSuccessful() + @DisplayName("Javac should be loaded only once") + @GradleTest + fun testJavacIsLoadedOnce(gradleVersion: GradleVersion) { + project("javacIsLoadedOnce".withPrefix, gradleVersion) { + build("assemble") { + val loadsCount = "Loaded com.sun.tools.javac.util.Context from" + .toRegex(RegexOption.LITERAL) + .findAll(output) + .count() - val loadsCount = Pattern.quote("Loaded com.sun.tools.javac.util.Context from").toRegex().findAll(output).count() - assertTrue(loadsCount <= 1, "javac is loaded more than once") + assert(loadsCount == 1) { + """ + |${printBuildOutput()} + | + | 'javac' is loaded more than once + """.trimMargin() + } + } } } - @Test - fun testKaptSkipped() { - val project = - Project("kaptSkipped", directoryPrefix = "kapt2") - project.build("build") { - assertSuccessful() + @DisplayName("Kapt is skipped when no annotation processors are added") + @GradleTest + fun testKaptSkipped(gradleVersion: GradleVersion) { + project("kaptSkipped".withPrefix, gradleVersion) { + build("build") { + assertTasksSkipped(":kaptGenerateStubsKotlin", ":kaptKotlin") + } } } - fun doTestSimpleWithCustomJdk(jdkVersion: Int, minumalGradleVersion: String = GradleVersionRequired.OLDEST_SUPPORTED) { - val javaHome = File(System.getProperty("jdk${jdkVersion}Home")!!) - Assume.assumeTrue("JDK $jdkVersion isn't available", javaHome.isDirectory) - val options = defaultBuildOptions().copy(javaHome = javaHome) - - val project = - Project("simple", directoryPrefix = "kapt2", gradleVersionRequirement = GradleVersionRequired.AtLeast(minumalGradleVersion)) - project.build("build", options = options) { - assertSuccessful() - assertKaptSuccessful() - // Check added because of https://youtrack.jetbrains.com/issue/KT-33056. - assertNotContains("javaslang.match.PatternsProcessor") + @DisplayName("Kapt is working with newer JDKs") + @JdkVersions(versions = [JavaVersion.VERSION_1_10, JavaVersion.VERSION_11, JavaVersion.VERSION_16]) + @GradleWithJdkTest + fun doTestSimpleWithCustomJdk( + gradleVersion: GradleVersion, + jdk: JdkVersions.ProvidedJdk + ) { + project( + "simple".withPrefix, + gradleVersion, + buildJdk = jdk.location + ) { + build("assemble") { + assertTasksExecuted(":kaptGenerateStubsKotlin", ":kaptKotlin") + // Check added because of https://youtrack.jetbrains.com/issue/KT-33056. + assertOutputDoesNotContain("javaslang.match.PatternsProcessor") + } } } - - @Test - fun testSimpleWithJdk11() { - doTestSimpleWithCustomJdk(11) - } - - @Test - fun testSimpleWithJdk10() { - doTestSimpleWithCustomJdk(10) - } - - @Test - fun testSimpleWithJdk16() { - doTestSimpleWithCustomJdk(16, "7.0") - } } +@DisplayName("Kapt with classloaders cache executing via workers ") class Kapt3ClassLoadersCacheIT : Kapt3WorkersIT() { - override fun kaptOptions(): KaptOptions = - super.kaptOptions().copy(classLoadersCacheSize = 10, includeCompileClasspath = false) + override fun kaptOptions(): BuildOptions.KaptOptions = super.kaptOptions().copy( + classLoadersCacheSize = 10, + includeCompileClasspath = false + ) - @Ignore - override fun testDisableDiscoveryInCompileClasspath() { - //classloaders cache is incompatible with AP discovery in classpath + @Disabled("classloaders cache is incompatible with AP discovery in classpath") + override fun testDisableDiscoveryInCompileClasspath(gradleVersion: GradleVersion) { } - @Test - override fun testAnnotationProcessorAsFqName() { - val project = Project("annotationProcessorAsFqName", directoryPrefix = "kapt2").also { it.setupWorkingDir() } + override fun testAnnotationProcessorAsFqName(gradleVersion: GradleVersion) { + project("annotationProcessorAsFqName".withPrefix, gradleVersion) { + //classloaders caching is not compatible with includeCompileClasspath + buildGradle.modify { + it.addBeforeSubstring( + "kapt \"org.jetbrains.kotlin:annotation-processor-example:\$kotlin_version\"\n", + "implementation \"org.jetbrains.kotlin:annotation-processor-example" + ) + } - //classloaders caching is not compatible with includeCompileClasspath - project.projectDir.getFileByName("build.gradle").modify { - it.addBeforeSubstring( - "kapt \"org.jetbrains.kotlin:annotation-processor-example:\$kotlin_version\"\n", - "implementation \"org.jetbrains.kotlin:annotation-processor-example" - ) - } - - project.build("build") { - assertSuccessful() - assertKaptSuccessful() - assertTasksExecuted(":compileKotlin", ":compileJava") - assertFileExists("build/generated/source/kapt/main/example/TestClassGenerated.java") - assertFileExists(kotlinClassesDir() + "example/TestClass.class") - assertFileExists(javaClassesDir() + "example/TestClassGenerated.class") + build("build") { + assertKaptSuccessful() + assertTasksExecuted(":compileKotlin", ":compileJava") + assertFileInProjectExists("build/generated/source/kapt/main/example/TestClassGenerated.java") + assertFileExists(kotlinClassesDir().resolve("example/TestClass.class")) + assertFileExists(javaClassesDir().resolve("example/TestClassGenerated.class")) + } } } - @Test - fun testAnnotationProcessorClassIsLoadedOnce() { - val project = Project("javacIsLoadedOnce", directoryPrefix = "kapt2") + @DisplayName("Annotation processor class should be loaded only once") + @GradleTest + fun testAnnotationProcessorClassIsLoadedOnce(gradleVersion: GradleVersion) { + project("javacIsLoadedOnce".withPrefix, gradleVersion) { + val loadPattern = Pattern.quote("Loaded example.ExampleAnnotationProcessor from").toRegex() + fun BuildResult.classLoadingCount() = loadPattern.findAll(output).count() - fun CompiledProject.classLoadingCount() = - Pattern.quote("Loaded example.ExampleAnnotationProcessor from").toRegex().findAll(output).count() + build("build") { + assertTasksExecuted(":module1:kaptKotlin", ":module2:kaptKotlin") + assertTrue(classLoadingCount() == 1, "AP class is loaded more than once") + } - project.build("build") { - assertSuccessful() - assertTasksExecuted(":module1:kaptKotlin", ":module2:kaptKotlin") - assertTrue(classLoadingCount() <= 1, "AP class is loaded more than once") - } + listOf( + subProject("module1").kotlinSourcesDir().resolve("module1/Module1Class.kt"), + subProject("module2").kotlinSourcesDir().resolve("module2/Module2Class.kt") + ).forEach { + it.append("\n fun touch() = null") + } - project.projectDir.getFilesByNames("Module1Class.kt", "Module2Class.kt").forEach { - it.appendText("\n fun touch() = null") - } - - project.build("build") { - assertSuccessful() - assertTasksExecuted(":module1:kaptKotlin", ":module2:kaptKotlin") - assertTrue(classLoadingCount() == 0, "AP class shouldn't be loaded on the second build") + build("build") { + assertTasksExecuted(":module1:kaptKotlin", ":module2:kaptKotlin") + assertTrue(classLoadingCount() == 0, "AP class shouldn't be loaded on the second build") + } } } } +@DisplayName("Kapt without workers") open class Kapt3IT : Kapt3BaseIT() { - @Test - open fun testAnnotationProcessorAsFqName() { - val project = Project("annotationProcessorAsFqName", directoryPrefix = "kapt2") - project.build("build") { - assertSuccessful() - assertKaptSuccessful() - assertTasksExecuted(":compileKotlin", ":compileJava") - assertFileExists("build/generated/source/kapt/main/example/TestClassGenerated.java") - assertFileExists(kotlinClassesDir() + "example/TestClass.class") - assertFileExists(javaClassesDir() + "example/TestClassGenerated.class") - } - } - - @Test - fun testSimple() { - val project = Project("simple", directoryPrefix = "kapt2") - - project.build("build") { - assertSuccessful() - assertKaptSuccessful() - assertTasksExecuted(":compileKotlin", ":compileJava") - assertFileExists("build/generated/source/kapt/main/example/TestClassGenerated.java") - assertFileExists(kotlinClassesDir() + "example/TestClass.class") - val javaClassesDir = javaClassesDir() - assertFileExists(javaClassesDir + "example/TestClassGenerated.class") - assertFileExists(javaClassesDir + "example/SourceAnnotatedTestClassGenerated.class") - assertFileExists(javaClassesDir + "example/BinaryAnnotatedTestClassGenerated.class") - assertFileExists(javaClassesDir + "example/RuntimeAnnotatedTestClassGenerated.class") - assertContains("example.JavaTest PASSED") - assertClassFilesNotContain(File(project.projectDir, "build/classes"), "ExampleSourceAnnotation") - assertNotContains("warning: The following options were not recognized by any processor") - assertContains("Need to discovery annotation processors in the AP classpath") - } - - project.build("build") { - assertSuccessful() - assertTasksUpToDate(":compileKotlin", ":compileJava") - } - } - - @Test - fun testSimpleWithIC() { - val options = defaultBuildOptions().copy(incremental = true) - val project = Project("simple", directoryPrefix = "kapt2") - val javaClassesDir = File(project.projectDir, project.classesDir(language = "java")) - - project.build("clean", "build", options = options) { - assertSuccessful() - assertKaptSuccessful() - assertTasksExecuted(":compileKotlin", ":compileJava") - assertClassFilesNotContain(javaClassesDir, "ExampleSourceAnnotation") - } - - project.projectDir.getFilesByNames("InternalDummy.kt", "test.kt").forEach { it.appendText(" ") } - project.build("build", options = options) { - assertSuccessful() - assertKaptSuccessful() - assertTasksExecuted(":compileKotlin") - // there are no actual changes in Java sources, generated sources, Kotlin classes - assertTasksUpToDate(":compileJava") - assertClassFilesNotContain(javaClassesDir, "ExampleSourceAnnotation") - } - - // emulating wipe by android plugin's IncrementalSafeguardTask - javaClassesDir.deleteRecursively() - project.build("build", options = options) { - assertSuccessful() - assertTasksUpToDate(":kaptGenerateStubsKotlin", ":kaptKotlin", ":compileKotlin") - assertFileExists(kotlinClassesDir() + "example/TestClass.class") - assertClassFilesNotContain(javaClassesDir, "ExampleSourceAnnotation") - } - } - - @Test - fun testDisableIcForGenerateStubs() { - val project = Project("simple", directoryPrefix = "kapt2") - project.build("build", options = defaultBuildOptions().copy(incremental = false)) { - assertSuccessful() - assertTasksExecuted(":kaptGenerateStubsKotlin") - assertNotContains(USING_JVM_INCREMENTAL_COMPILATION_MESSAGE) - } - } - - @Test - fun testInheritedAnnotations() { - Project("inheritedAnnotations", directoryPrefix = "kapt2").build("build") { - assertSuccessful() - assertKaptSuccessful() - assertFileExists("build/generated/source/kapt/main/example/TestClassGenerated.java") - assertFileExists("build/generated/source/kapt/main/example/AncestorClassGenerated.java") - assertFileExists(javaClassesDir() + "example/TestClassGenerated.class") - assertFileExists(javaClassesDir() + "example/AncestorClassGenerated.class") - } - } - - @Test - fun testArguments() { - Project("arguments", directoryPrefix = "kapt2").build("build") { - assertSuccessful() - assertKaptSuccessful() - assertContains( - "AP options: {suffix=Customized, justColon=:, justEquals==, containsColon=a:b, " + - "containsEquals=a=b, startsWithColon=:a, startsWithEquals==a, endsWithColon=a:, " + - "endsWithEquals=a:, withSpace=a b c," + @DisplayName("Should find annotation processor via FQName") + @GradleTest + open fun testAnnotationProcessorAsFqName(gradleVersion: GradleVersion) { + project( + "annotationProcessorAsFqName".withPrefix, + gradleVersion, + buildOptions = defaultBuildOptions.copy( + kaptOptions = kaptOptions().copy(includeCompileClasspath = true) ) - assertContains("-Xmaxerrs=500, -Xlint:all=-Xlint:all") // Javac options test - assertFileExists("build/generated/source/kapt/main/example/TestClassCustomized.java") - assertFileExists(kotlinClassesDir() + "example/TestClass.class") - assertFileExists(javaClassesDir() + "example/TestClassCustomized.class") - assertContains("Annotation processor class names are set, skip AP discovery") + ) { + build("build", forceOutput = true) { + assertTasksExecuted(":kaptGenerateStubsKotlin", ":kaptKotlin", ":compileKotlin", ":compileJava") + assertKaptSuccessful() + assertFileExists(projectPath.resolve("build/generated/source/kapt/main/example/TestClassGenerated.java")) + assertFileExists(kotlinClassesDir().resolve("example/TestClass.class")) + assertFileExists(javaClassesDir().resolve("example/TestClassGenerated.class")) + } } } - @Test - fun testGeneratedDirectoryIsUpToDate() { - val project = Project("generatedDirUpToDate", directoryPrefix = "kapt2") + @DisplayName("Kapt tasks is up-to-date on the second run") + @GradleTest + fun testSimple(gradleVersion: GradleVersion) { + project("simple".withPrefix, gradleVersion) { - project.build("build") { - assertSuccessful() - assertKaptSuccessful() - assertTasksExecuted(":compileKotlin", ":compileJava") - assertFileExists(kotlinClassesDir() + "example/TestClass.class") + build("build") { + assertKaptSuccessful() + assertTasksExecuted(":kaptGenerateStubsKotlin", ":kaptKotlin", ":compileKotlin", ":compileJava") + assertFileExists(projectPath.resolve("build/generated/source/kapt/main/example/TestClassGenerated.java")) + assertFileExists(kotlinClassesDir().resolve("example/TestClass.class")) + assertFileExists(javaClassesDir().resolve("example/TestClassGenerated.class")) + assertFileExists(javaClassesDir().resolve("example/SourceAnnotatedTestClassGenerated.class")) + assertFileExists(javaClassesDir().resolve("example/BinaryAnnotatedTestClassGenerated.class")) + assertFileExists(javaClassesDir().resolve("example/RuntimeAnnotatedTestClassGenerated.class")) + assertFileNotExistsInTree("build/classes", "ExampleSourceAnnotation.class") + assertOutputDoesNotContain("warning: The following options were not recognized by any processor") + assertOutputContains("Need to discovery annotation processors in the AP classpath") + } - assertFileExists("build/generated/source/kapt/main/example/TestClassGenerated.java") - assertFileExists("build/generated/source/kapt/main/example/SourceAnnotatedTestClassGenerated.java") - assertFileExists("build/generated/source/kapt/main/example/BinaryAnnotatedTestClassGenerated.java") - assertFileExists("build/generated/source/kapt/main/example/RuntimeAnnotatedTestClassGenerated.java") - - assertFileExists(javaClassesDir() + "example/TestClassGenerated.class") - assertFileExists(javaClassesDir() + "example/SourceAnnotatedTestClassGenerated.class") - assertFileExists(javaClassesDir() + "example/BinaryAnnotatedTestClassGenerated.class") - assertFileExists(javaClassesDir() + "example/RuntimeAnnotatedTestClassGenerated.class") - } - - val testKt = project.projectDir.getFileByName("test.kt") - testKt.writeText(testKt.readText().replace("@ExampleBinaryAnnotation", "")) - - project.build("build") { - assertSuccessful() - assertTasksExecuted(":compileKotlin", ":compileJava") - assertFileExists(kotlinClassesDir() + "example/TestClass.class") - - assertFileExists("build/generated/source/kapt/main/example/TestClassGenerated.java") - assertFileExists("build/generated/source/kapt/main/example/SourceAnnotatedTestClassGenerated.java") - /*!*/ assertNoSuchFile("build/generated/source/kapt/main/example/BinaryAnnotatedTestClassGenerated.java") - assertFileExists("build/generated/source/kapt/main/example/RuntimeAnnotatedTestClassGenerated.java") - - assertFileExists(javaClassesDir() + "example/TestClassGenerated.class") - assertFileExists(javaClassesDir() + "example/SourceAnnotatedTestClassGenerated.class") - /*!*/ assertNoSuchFile(javaClassesDir() + "example/BinaryAnnotatedTestClassGenerated.class") - assertFileExists(javaClassesDir() + "example/RuntimeAnnotatedTestClassGenerated.class") + build("build") { + assertTasksUpToDate(":kaptGenerateStubsKotlin", ":kaptKotlin", ":compileKotlin", ":compileJava") + } } } - @Test - fun testRemoveJavaClassICRebuild() { - testICRebuild { project -> - project.projectFile("Foo.java").delete() + @DisplayName("Kapt is working with incremental compilation") + @GradleTest + fun testSimpleWithIC(gradleVersion: GradleVersion) { + project( + "simple".withPrefix, + gradleVersion, + buildOptions = defaultBuildOptions.copy(incremental = true) + ) { + build("clean", "build") { + assertTasksExecuted(":kaptGenerateStubsKotlin", ":kaptKotlin", ":compileKotlin", ":compileJava") + assertKaptSuccessful() + assertFileNotExistsInTree(javaClassesDir(), "ExampleSourceAnnotation.class") + } + + javaSourcesDir().resolve("test.kt").append(" ") + javaSourcesDir().resolve("foo/InternalDummy.kt").append(" ") + build("build") { + assertTasksExecuted(":kaptGenerateStubsKotlin", ":compileKotlin") + // there are no actual changes in Java sources, generated sources, Kotlin classes + assertTasksUpToDate(":kaptKotlin", ":compileJava") + assertFileNotExistsInTree(javaClassesDir(), "ExampleSourceAnnotation.class") + } + + // emulating wipe by android plugin's IncrementalSafeguardTask + javaClassesDir().toFile().deleteRecursively() + build("build") { + assertTasksUpToDate(":kaptGenerateStubsKotlin", ":kaptKotlin", ":compileKotlin") + assertFileExists(kotlinClassesDir().resolve("example/TestClass.class")) + assertFileNotExistsInTree(javaClassesDir(), "ExampleSourceAnnotation.class") + } } } - @Test - fun testChangeClasspathICRebuild() { - testICRebuild { project -> - project.projectFile("build.gradle").modify { + @DisplayName("Disabled incremental compilation should disable it also for generate stubs task") + @GradleTest + fun testDisableIcForGenerateStubs(gradleVersion: GradleVersion) { + project( + "simple".withPrefix, + gradleVersion, + buildOptions = defaultBuildOptions.copy(incremental = false) + ) { + build("build") { + assertTasksExecuted(":kaptGenerateStubsKotlin") + assertOutputDoesNotContain(USING_JVM_INCREMENTAL_COMPILATION_MESSAGE) + } + } + } + + @DisplayName("Works with inherited annotations") + @GradleTest + fun testInheritedAnnotations(gradleVersion: GradleVersion) { + project("inheritedAnnotations".withPrefix, gradleVersion) { + build("build") { + assertKaptSuccessful() + assertFileExists(projectPath.resolve("build/generated/source/kapt/main/example/TestClassGenerated.java")) + assertFileExists(projectPath.resolve("build/generated/source/kapt/main/example/AncestorClassGenerated.java")) + assertFileExists(javaClassesDir().resolve("example/TestClassGenerated.class")) + assertFileExists(javaClassesDir().resolve("example/AncestorClassGenerated.class")) + } + } + } + + @DisplayName("passes arguments from kapt configuration") + @GradleTest + fun testArguments(gradleVersion: GradleVersion) { + project("arguments".withPrefix, gradleVersion) { + build("build") { + assertKaptSuccessful() + assertOutputContains( + "AP options: {suffix=Customized, justColon=:, justEquals==, containsColon=a:b, " + + "containsEquals=a=b, startsWithColon=:a, startsWithEquals==a, endsWithColon=a:, " + + "endsWithEquals=a:, withSpace=a b c," + ) + assertOutputContains("-Xmaxerrs=500, -Xlint:all=-Xlint:all") // Javac options test + assertFileExists(projectPath.resolve("build/generated/source/kapt/main/example/TestClassCustomized.java")) + assertFileExists(kotlinClassesDir().resolve("example/TestClass.class")) + assertFileExists(javaClassesDir().resolve("example/TestClassCustomized.class")) + assertOutputContains("Annotation processor class names are set, skip AP discovery") + } + } + } + + @DisplayName("generated directory is up-to-date on binary annotation remove") + @GradleTest + fun testGeneratedDirectoryIsUpToDate(gradleVersion: GradleVersion) { + project("generatedDirUpToDate".withPrefix, gradleVersion) { + + build("build") { + assertTasksExecuted(":kaptGenerateStubsKotlin", ":kaptKotlin", ":compileKotlin", ":compileJava") + assertKaptSuccessful() + assertFileExists(kotlinClassesDir().resolve("example/TestClass.class")) + + assertFileExists(projectPath.resolve("build/generated/source/kapt/main/example/TestClassGenerated.java")) + assertFileExists(projectPath.resolve("build/generated/source/kapt/main/example/SourceAnnotatedTestClassGenerated.java")) + assertFileExists(projectPath.resolve("build/generated/source/kapt/main/example/BinaryAnnotatedTestClassGenerated.java")) + assertFileExists(projectPath.resolve("build/generated/source/kapt/main/example/RuntimeAnnotatedTestClassGenerated.java")) + + assertFileExists(javaClassesDir().resolve("example/TestClassGenerated.class")) + assertFileExists(javaClassesDir().resolve("example/SourceAnnotatedTestClassGenerated.class")) + assertFileExists(javaClassesDir().resolve("example/BinaryAnnotatedTestClassGenerated.class")) + assertFileExists(javaClassesDir().resolve("example/RuntimeAnnotatedTestClassGenerated.class")) + } + + javaSourcesDir().resolve("test.kt").modify { + it.replace("@ExampleBinaryAnnotation", "") + } + + build("build") { + assertTasksExecuted(":kaptGenerateStubsKotlin", ":kaptKotlin", ":compileKotlin") + assertTasksUpToDate(":compileJava") + assertFileExists(kotlinClassesDir().resolve("example/TestClass.class")) + + assertFileExists(projectPath.resolve("build/generated/source/kapt/main/example/TestClassGenerated.java")) + assertFileExists(projectPath.resolve("build/generated/source/kapt/main/example/SourceAnnotatedTestClassGenerated.java")) + assertFileInProjectNotExists("build/generated/source/kapt/main/example/BinaryAnnotatedTestClassGenerated.java") + assertFileExists(projectPath.resolve("build/generated/source/kapt/main/example/RuntimeAnnotatedTestClassGenerated.java")) + + assertFileExists(javaClassesDir().resolve("example/TestClassGenerated.class")) + assertFileExists(javaClassesDir().resolve("example/SourceAnnotatedTestClassGenerated.class")) + assertFileNotExists(javaClassesDir().resolve("example/BinaryAnnotatedTestClassGenerated.class")) + assertFileExists(javaClassesDir().resolve("example/RuntimeAnnotatedTestClassGenerated.class")) + } + } + } + + @DisplayName("Should incrementally rebuild on java class deletion") + @GradleTest + fun testRemoveJavaClassICRebuild(gradleVersion: GradleVersion) { + testICRebuild(gradleVersion) { project -> + project.javaSourcesDir().resolve("foo/Foo.java").deleteExisting() + } + } + + @DisplayName("Should incrementally rebuild on classpath change") + @GradleTest + fun testChangeClasspathICRebuild(gradleVersion: GradleVersion) { + testICRebuild(gradleVersion) { project -> + project.buildGradle.modify { "$it\ndependencies { implementation 'org.jetbrains.kotlin:kotlin-reflect:' + kotlin_version }" } } } // tests all output directories are cleared when IC rebuilds - private fun testICRebuild(performChange: (Project) -> Unit) { - val project = Project("incrementalRebuild", directoryPrefix = "kapt2") - val options = defaultBuildOptions().copy(incremental = true) - val generatedSrc = "build/generated/source/kapt/main" + private fun testICRebuild( + gradleVersion: GradleVersion, + performChange: (TestProject) -> Unit + ) { + project( + "incrementalRebuild".withPrefix, + gradleVersion, + buildOptions = defaultBuildOptions.copy(incremental = true) + ) { + val generatedSrc = "build/generated/source/kapt/main" - project.build("build", options = options) { - assertSuccessful() + build("build") { + // generated sources + assertFileExists(projectPath.resolve("$generatedSrc/bar/UseBar_MembersInjector.java")) + } - // generated sources - assertFileExists("$generatedSrc/bar/UseBar_MembersInjector.java") - } + performChange(this) - performChange(project) - project.projectFile("UseBar.kt").modify { it.replace("package bar", "package foo.bar") } + javaSourcesDir().resolve("bar/UseBar.kt").modify { it.replace("package bar", "package foo.bar") } - project.build("build", options = options) { - assertSuccessful() - assertTasksExecuted(":kaptGenerateStubsKotlin", ":kaptKotlin", ":compileKotlin", ":compileJava") + build("build") { + assertTasksExecuted(":kaptGenerateStubsKotlin", ":kaptKotlin", ":compileKotlin", ":compileJava") - // generated sources - assertFileExists("$generatedSrc/foo/bar/UseBar_MembersInjector.java") - assertNoSuchFile("$generatedSrc/bar/UseBar_MembersInjector.java") + // generated sources + assertFileExists(projectPath.resolve("$generatedSrc/foo/bar/UseBar_MembersInjector.java")) + assertFileInProjectNotExists("$generatedSrc/bar/UseBar_MembersInjector.java") - // classes - assertFileExists(kotlinClassesDir() + "foo/bar/UseBar.class") - assertNoSuchFile(kotlinClassesDir() + "bar/UseBar.class") - assertFileExists(javaClassesDir() + "foo/bar/UseBar_MembersInjector.class") - assertNoSuchFile(javaClassesDir() + "bar/UseBar_MembersInjector.class") + // classes + assertFileExists(kotlinClassesDir().resolve("foo/bar/UseBar.class")) + assertFileNotExists(kotlinClassesDir().resolve("bar/UseBar.class")) + assertFileExists(javaClassesDir().resolve("foo/bar/UseBar_MembersInjector.class")) + assertFileNotExists(javaClassesDir().resolve("bar/UseBar_MembersInjector.class")) + } } } - @Test - fun testRemoveAnnotationIC() { - val project = Project("simple", directoryPrefix = "kapt2") - val options = defaultBuildOptions().copy(incremental = true) - project.setupWorkingDir() - val internalDummyKt = project.projectDir.getFileByName("InternalDummy.kt") + @DisplayName("Should run processing incrementally on annotation removal") + @GradleTest + fun testRemoveAnnotationIC(gradleVersion: GradleVersion) { + project( + "simple".withPrefix, + gradleVersion, + buildOptions = defaultBuildOptions.copy(incremental = true) + ) { + val internalDummyKt = javaSourcesDir().resolve("foo/InternalDummy.kt") - // add annotation - val exampleAnn = "@example.ExampleAnnotation " - internalDummyKt.modify { it.addBeforeSubstring(exampleAnn, "internal class InternalDummy") } + // add annotation + val exampleAnn = "@example.ExampleAnnotation " + internalDummyKt.modify { it.addBeforeSubstring(exampleAnn, "internal class InternalDummy") } - project.build("classes", options = options) { - assertSuccessful() - assertFileExists("build/generated/source/kapt/main/foo/InternalDummyGenerated.java") - } + build("classes") { + assertFileExists(projectPath.resolve("build/generated/source/kapt/main/foo/InternalDummyGenerated.java")) + } - // remove annotation - internalDummyKt.modify { it.replace(exampleAnn, "") } + // remove annotation + internalDummyKt.modify { it.replace(exampleAnn, "") } - project.build("classes", options = options) { - assertSuccessful() - val allMainKotlinSrc = File(project.projectDir, "src/main").allKotlinFiles() - assertCompiledKotlinSources(project.relativize(allMainKotlinSrc)) - assertNoSuchFile("build/generated/source/kapt/main/foo/InternalDummyGenerated.java") + build("classes", buildOptions = buildOptions.copy(logLevel = LogLevel.DEBUG)) { + val allMainKotlinSrc = relativeToProject(javaSourcesDir().allKotlinSources).toSet() + assertCompiledKotlinSources(allMainKotlinSrc, output) + assertFileInProjectNotExists("build/generated/source/kapt/main/foo/InternalDummyGenerated.java") + } } } - @Test - fun testKt18799() { - val project = Project("kt18799", directoryPrefix = "kapt2") + @DisplayName("KT18799: generate annotation value for constant values in documented types") + @GradleTest + fun testKt18799(gradleVersion: GradleVersion) { + project("kt18799".withPrefix, gradleVersion) { + build("kaptKotlin") - project.build("kaptKotlin") { - assertSuccessful() - } + subProject("app") + .javaSourcesDir() + .resolve("com.b.A.kt") + .modify { + val line = "@Factory(factoryClass = CLASS_NAME, something = arrayOf(Test()))" + assert(line in it) + it.replace(line, "@Factory(factoryClass = CLASS_NAME)") + } - project.projectDir.getFileByName("com.b.A.kt").modify { - val line = "@Factory(factoryClass = CLASS_NAME, something = arrayOf(Test()))" - assert(line in it) - it.replace(line, "@Factory(factoryClass = CLASS_NAME)") - } - - project.build("kaptKotlin") { - assertSuccessful() + build("kaptKotlin") } } - /** - * Tests that compile arguments are properly copied from compileKotlin to kaptTask - */ - @Test - fun testCopyCompileArguments() { - val project = Project("simple", directoryPrefix = "kapt2") - project.setupWorkingDir() - - val arg = "-Xskip-runtime-version-check" - project.projectDir.getFileByName("build.gradle").modify { - it + """ + @DisplayName("compile arguments are properly copied from compileKotlin to kaptTask") + @GradleTest + fun testCopyCompileArguments(gradleVersion: GradleVersion) { + project( + "simple".withPrefix, + gradleVersion, + buildOptions = defaultBuildOptions.copy(logLevel = LogLevel.DEBUG) + ) { + val arg = "-Xskip-runtime-version-check" + buildGradle.modify { + //language=Gradle + """ + $it $SYSTEM_LINE_SEPARATOR compileKotlin { kotlinOptions.freeCompilerArgs = ['$arg'] } - """.trimIndent() - } - - project.build("build") { - assertSuccessful() - assertKaptSuccessful() - val regex = "(?m)^.*Kotlin compiler args.*-P plugin:org\\.jetbrains\\.kotlin\\.kapt3.*$".toRegex() - val kaptArgs = regex.find(output)?.value ?: error("Kapt compiler arguments are not found!") - assert(kaptArgs.contains(arg)) { "Kapt compiler arguments should contain '$arg'" } - } - } - - @Test - fun testOutputKotlinCode() { - Project("kaptOutputKotlinCode", directoryPrefix = "kapt2").build("build") { - assertSuccessful() - assertKaptSuccessful() - assertFileExists("build/generated/source/kapt/main/example/TestClassCustomized.java") - assertFileExists("build/generated/source/kaptKotlin/main/TestClass.kt") - assertFileExists(kotlinClassesDir() + "example/TestClass.class") - assertFileExists(javaClassesDir() + "example/TestClassCustomized.class") - } - } - - @Test - fun testLocationMapping() { - val project = Project("locationMapping", directoryPrefix = "kapt2") - val regex = "((Test\\.java)|(test\\.kt)):(\\d+): error: GenError element".toRegex() - - fun CompiledProject.getErrorMessages(): String = - regex.findAll(output).map { it.value }.joinToString("\n") - - fun genJavaErrorString(vararg lines: Int) = - lines.joinToString("\n") { "Test.java:$it: error: GenError element" } - - fun genKotlinErrorString(vararg lines: Int) = - lines.joinToString("\n") { "test.kt:$it: error: GenError element" } - - project.build("build") { - assertFailed() - val actual = getErrorMessages() - // try as 0 starting lines first, then as 1 starting line - try { - Assert.assertEquals(genJavaErrorString(8, 20), actual) - } catch (e: AssertionError) { - Assert.assertEquals(genJavaErrorString(9, 21), actual) + """.trimIndent() } - } - project.projectDir.getFileByName("build.gradle").modify { - it.replace("mapDiagnosticLocations = false", "mapDiagnosticLocations = true") - } - - project.build("build") { - assertFailed() - val actual = getErrorMessages() - // try as 0 starting lines first, then as 1 starting line - try { - Assert.assertEquals(genKotlinErrorString(3, 6), actual) - } catch (e: AssertionError) { - Assert.assertEquals(genKotlinErrorString(4, 7), actual) + build("build") { + assertKaptSuccessful() + val regex = "(?m)^.*Kotlin compiler args.*-P plugin:org\\.jetbrains\\.kotlin\\.kapt3.*$".toRegex() + val kaptArgs = regex.find(output)?.value ?: error("Kapt compiler arguments are not found!") + assert(kaptArgs.contains(arg)) { "Kapt compiler arguments should contain '$arg'" } } } } - @Test - fun testNoKaptPluginApplied() { - val project = Project("nokapt", directoryPrefix = "kapt2") - - project.build("build") { - assertFailed() - assertContains("Could not find method kapt() for arguments") - } - } - - @Test - fun testChangesInLocalAnnotationProcessor() { - val project = Project("localAnnotationProcessor", directoryPrefix = "kapt2") - - project.build("build") { - assertSuccessful() - } - - val testAnnotationProcessor = project.projectDir.getFileByName("TestAnnotationProcessor.kt") - testAnnotationProcessor.modify { text -> - val commentText = "// print warning " - assert(text.contains(commentText)) - text.replace(commentText, "") - } - - project.build("build") { - assertSuccessful() - assertNotContains( - ":example:kaptKotlin UP-TO-DATE", - ":example:kaptGenerateStubsKotlin UP-TO-DATE" - ) - - assertContains("Additional warning message from AP") - } - - project.build(options = defaultBuildOptions().copy(incremental = false), params = arrayOf("build")) { - assertSuccessful() - assertNull( - project.projectDir.findFileByName("TestGeneratedKt.java"), - "Java stubs should not be generated for Kotlin sources generated by annotation processors." - ) - assertNotNull(project.projectDir.findFileByName("TestGeneratedKt.class")) - assertNull( - project.projectDir.findFileByName("AnotherGenerated.java"), - "Java stubs should not be generated for Kotlin sources generated by annotation processors." - ) - assertNotNull(project.projectDir.findFileByName("AnotherGenerated.class")) - } - } - - @Test - fun testKaptConfigurationLazyResolution() = with(Project("simple", directoryPrefix = "kapt2")) { - setupWorkingDir() - File(projectDir, "build.gradle").appendText( - "\ndependencies { kapt project.files { throw new GradleException(\"Resolved!\") } }" - ) - // Check that the kapt configuration does not get resolved during the project evaluation: - build("tasks") { - assertSuccessful() - assertNotContains("Resolved!") - } - } - - @Test - open fun testDisableDiscoveryInCompileClasspath() = with(Project("kaptAvoidance", directoryPrefix = "kapt2")) { - setupWorkingDir() - val buildGradle = projectDir.resolve("app/build.gradle") - buildGradle.modify { - it.addBeforeSubstring("//", "kapt \"org.jetbrains.kotlin") - } - build("assemble") { - assertSuccessful() - assertContains("Annotation processors discovery from compile classpath is deprecated") - } - - buildGradle.modify { - "$it\n\nkapt.includeCompileClasspath = false" - } - build("assemble") { - assertFailed() - assertNotContains("Annotation processors discovery from compile classpath is deprecated") - } - } - - - @Test - fun testKaptAvoidance() = with(Project("kaptAvoidance", directoryPrefix = "kapt2")) { - setupWorkingDir() - - projectDir.resolve("app/build.gradle").modify { - "$it\n\nkapt.includeCompileClasspath = true" - } - - build("assemble") { - assertSuccessful() - assertTasksExecuted( - ":app:kaptGenerateStubsKotlin", - ":app:kaptKotlin", - ":app:compileKotlin", - ":app:compileJava", - ":lib:compileKotlin" - ) - } - - val original = "fun foo() = 0" - val replacement1 = "fun foo() = 1" - val replacement2 = "fun foo() = 2" - val libClassKt = projectDir.getFileByName("LibClass.kt") - libClassKt.modify { it.checkedReplace(original, replacement1) } - - build("assemble") { - assertSuccessful() - assertTasksExecuted( - ":lib:compileKotlin", - ":app:kaptGenerateStubsKotlin", - ":app:kaptKotlin" - ) - } - - // enable discovery - projectDir.resolve("app/build.gradle").modify { - it.replace( - "kapt.includeCompileClasspath = true", - "kapt.includeCompileClasspath = false" - ) - } - build("assemble") { - assertSuccessful() - assertTasksUpToDate(":lib:compileKotlin") - assertTasksExecuted( - ":app:kaptGenerateStubsKotlin", - ":app:kaptKotlin" - ) - } - - libClassKt.modify { it.checkedReplace(replacement1, replacement2) } - build("assemble") { - assertSuccessful() - assertTasksExecuted(":lib:compileKotlin", ":app:kaptGenerateStubsKotlin") - assertTasksUpToDate(":app:kaptKotlin") - } - } - - @Test - fun testKt19179andKt37241() { - val project = Project("kt19179", directoryPrefix = "kapt2") - - project.build("build") { - assertSuccessful() - assertFileExists("processor/build/tmp/kapt3/classes/main/META-INF/services/javax.annotation.processing.Processor") - - val processorJar = fileInWorkingDir("processor/build/libs/processor.jar") - assert(processorJar.exists()) - - val zip = ZipFile(processorJar) - @Suppress("ConvertTryFinallyToUseCall") - try { - assert(zip.getEntry("META-INF/services/javax.annotation.processing.Processor") != null) - } finally { - zip.close() + @DisplayName("generates Kotlin code") + @GradleTest + fun testOutputKotlinCode(gradleVersion: GradleVersion) { + project("kaptOutputKotlinCode".withPrefix, gradleVersion) { + build("build") { + assertKaptSuccessful() + assertFileExists(projectPath.resolve("build/generated/source/kapt/main/example/TestClassCustomized.java")) + assertFileExists(projectPath.resolve("build/generated/source/kaptKotlin/main/TestClass.kt")) + assertFileExists(kotlinClassesDir().resolve("example/TestClass.class")) + assertFileExists(javaClassesDir().resolve("example/TestClassCustomized.class")) } - - assertTasksExecuted( - ":processor:kaptGenerateStubsKotlin", - ":processor:kaptKotlin", - ":app:kaptGenerateStubsKotlin", - ":app:kaptKotlin" - ) - - // Test for KT-37241, check the that non-existent classpath entry is filtered out: - assertNotContains("Classpath entry points to a non-existent location") - } - - project.projectDir.getFileByName("Test.kt").modify { text -> - assert("SomeClass()" in text) - text.replace("SomeClass()", "SomeClass(); val a = 5") - } - - project.build("build") { - assertSuccessful() - assertTasksUpToDate(":processor:kaptGenerateStubsKotlin", ":processor:kaptKotlin", ":app:kaptKotlin") - assertTasksExecuted(":app:kaptGenerateStubsKotlin") - } - - project.projectDir.getFileByName("Test.kt").modify { text -> - text + "\n\nfun t() {}" - } - - project.build("build") { - assertSuccessful() - assertTasksUpToDate(":processor:kaptGenerateStubsKotlin", ":processor:kaptKotlin") - assertTasksExecuted(":app:kaptGenerateStubsKotlin", ":app:kaptKotlin") } } - @Test - fun testDependencyOnKaptModule() = with(Project("simpleProject")) { - setupWorkingDir() + @DisplayName("location mapping is working as expected") + @GradleTest + fun testLocationMapping(gradleVersion: GradleVersion) { + project("locationMapping".withPrefix, gradleVersion) { + val regex = "((Test\\.java)|(test\\.kt)):(\\d+): error: GenError element".toRegex() - val kaptProject = Project("simple", directoryPrefix = "kapt2").apply { setupWorkingDir(false) } - kaptProject.projectDir.copyRecursively(projectDir.resolve("simple")) - projectDir.resolve("settings.gradle").appendText("include 'simple'") - gradleBuildScript().appendText("\ndependencies { implementation project(':simple') }") + fun BuildResult.getErrorMessages(): String = + regex.findAll(output).map { it.value }.joinToString("\n") - testResolveAllConfigurations() - } + fun genJavaErrorString(vararg lines: Int) = + lines.joinToString("\n") { "Test.java:$it: error: GenError element" } - @Test - fun testMPPKaptPresence() { - val project = Project("mpp-kapt-presence", directoryPrefix = "kapt2") + fun genKotlinErrorString(vararg lines: Int) = + lines.joinToString("\n") { "test.kt:$it: error: GenError element" } - project.build("build") { - assertSuccessful() - assertTasksExecuted(":dac:jdk:kaptGenerateStubsKotlin", ":dac:jdk:compileKotlin") - } - } - - /** Regression test for KT-31127. */ - @Test - fun testKotlinProcessorUsingFiler() { - val project = Project("kotlinProject").apply { - setupWorkingDir() - gradleBuildScript().appendText(""" - apply plugin: 'kotlin-kapt' - - dependencies { - kapt "org.jetbrains.kotlin:annotation-processor-example:${"$"}kotlin_version" - implementation "org.jetbrains.kotlin:annotation-processor-example:${"$"}kotlin_version" + buildAndFail("build") { + val actual = getErrorMessages() + // try as 0 starting lines first, then as 1 starting line + try { + assertEquals(expected = genJavaErrorString(8, 20), actual = actual) + } catch (e: AssertionError) { + assertEquals(expected = genJavaErrorString(9, 21), actual = actual) } - """.trimIndent()) + } - // The test must not contain any java sources in order to detect the issue. - Assert.assertEquals(emptyList(), projectDir.allJavaFiles().toList()) - projectDir.getFileByName("Dummy.kt").modify { - it.replace("class Dummy", "@example.KotlinFilerGenerated class Dummy") + buildGradle.modify { + it.replace("mapDiagnosticLocations = false", "mapDiagnosticLocations = true") + } + + buildAndFail("build") { + val actual = getErrorMessages() + // try as 0 starting lines first, then as 1 starting line + try { + assertEquals(expected = genKotlinErrorString(3, 6), actual = actual) + } catch (e: AssertionError) { + assertEquals(expected = genKotlinErrorString(4, 7), actual = actual) + } } } + } - project.build("build") { - assertSuccessful() - assertFileExists("build/generated/source/kapt/main/demo/DummyGenerated.kt") - assertTasksExecuted(":compileKotlin") - assertTasksSkipped(":compileJava") + @DisplayName("should fail to add dependency into 'kapt' configuration when plugin is not applied") + @GradleTest + fun testNoKaptPluginApplied(gradleVersion: GradleVersion) { + project("nokapt".withPrefix, gradleVersion) { + + buildAndFail("build") { + assertOutputContains("Could not find method kapt() for arguments") + } } } - @Test - fun testSimpleWithJdk11AndSourceLevel8() { - val javaHome = File(System.getProperty("jdk11Home")!!) - Assume.assumeTrue("JDK 11 isn't available", javaHome.isDirectory) - val options = defaultBuildOptions().copy(javaHome = javaHome) + @DisplayName("Should re-run kapt on changes in local annotation processor") + @GradleTest + fun testChangesInLocalAnnotationProcessor(gradleVersion: GradleVersion) { + project("localAnnotationProcessor".withPrefix, gradleVersion) { + build("build") - val project = Project("simple", directoryPrefix = "kapt2").also { - it.setupWorkingDir() - it.gradleBuildScript().appendText("\nsourceCompatibility = '8'") - } - project.build("build", options = options) { - assertSuccessful() - assertKaptSuccessful() - assertContains("Javac options: {-source=1.8}") + val testAnnotationProcessor = subProject("annotation-processor").javaSourcesDir().resolve("TestAnnotationProcessor.kt") + testAnnotationProcessor.modify { text -> + val commentText = "// print warning " + assert(text.contains(commentText)) + text.replace(commentText, "") + } + + build("build") { + assertTasksExecuted( + ":example:kaptKotlin", + ":example:kaptGenerateStubsKotlin" + ) + + assertOutputContains("Additional warning message from AP") + } + + val exampleSubProjectBuildDir = subProject("example").projectPath.resolve("build") + build( + "build", + buildOptions = defaultBuildOptions.copy(incremental = false) + ) { + // Java stubs should not be generated for Kotlin sources generated by annotation processors. + assertFileNotExistsInTree( + exampleSubProjectBuildDir, + "TestGeneratedKt.java" + ) + assertFileNotExistsInTree( + exampleSubProjectBuildDir, + "AnotherGenerated.java" + ) + + assertFileExistsInTree( + exampleSubProjectBuildDir, + "TestGeneratedKt.class" + ) + assertFileExistsInTree( + exampleSubProjectBuildDir, + "AnotherGenerated.class" + ) + } } } - @Test - fun testJpmsModule() { - //jpms is part of java >= 9 - val javaHome = File(System.getProperty("jdk9Home")!!) - Assume.assumeTrue("JDK 9 isn't available", javaHome.isDirectory) - val options = defaultBuildOptions().copy(javaHome = javaHome) - - val project = Project("jpms-module", directoryPrefix = "kapt2") - - project.build("build", options = options) { - assertSuccessful() - assertKaptSuccessful() - assertTasksExecuted(":compileKotlin", ":compileJava") - assertFileExists("build/generated/source/kapt/main/lab/TestClassGenerated.java") - assertFileExists(kotlinClassesDir() + "lab/TestClass.class") - } - - project.build("build", options = options) { - assertSuccessful() - assertTasksUpToDate(":compileKotlin", ":compileJava") - } - - project.projectDir.getFileByName("InjectedClass.kt").modify { text -> - text.checkedReplace( - "//placeholder", - "fun someChange() = null" + @DisplayName("should not resolve 'kapt' configuration during build configuration phase") + @GradleTest + fun testKaptConfigurationLazyResolution(gradleVersion: GradleVersion) { + project("simple".withPrefix, gradleVersion) { + buildGradle.append( + "\ndependencies { kapt project.files { throw new GradleException(\"Resolved!\") } }" ) - } - - project.build("build", options = options) { - assertSuccessful() - assertKaptSuccessful() - assertTasksExecuted(":compileKotlin", ":compileJava") - + // Check that the kapt configuration does not get resolved during the project evaluation: + build("tasks") { + assertOutputDoesNotContain("Resolved!") + } } } - // https://youtrack.jetbrains.com/issue/KT-46651 - @Test - fun kaptGenerateStubsShouldNotCaptureSourcesStateInConfigurationCache() { - with( - Project( - "incrementalRebuild", - directoryPrefix = "kapt2", - gradleVersionRequirement = GradleVersionRequired.AtLeast("6.7.1"), - minLogLevel = LogLevel.INFO + @DisplayName("Should be possible to disable discovery in compile classpath") + @GradleTest + open fun testDisableDiscoveryInCompileClasspath(gradleVersion: GradleVersion) { + project( + "kaptAvoidance".withPrefix, + gradleVersion, + buildOptions = defaultBuildOptions.copy( + kaptOptions = kaptOptions().copy(includeCompileClasspath = true) ) ) { - setupWorkingDir() - val buildOptions = defaultBuildOptions().copy( - configurationCache = true - ) + val appSubproject = subProject("app") - build("assemble", options = buildOptions) { - assertSuccessful() + appSubproject.buildGradle.modify { + it.addBeforeSubstring("//", "kapt \"org.jetbrains.kotlin") + } + build("assemble") { + assertOutputContains("Annotation processors discovery from compile classpath is deprecated") } - projectDir.resolve("src/main/java/bar/UseBar.kt").apply { + appSubproject.buildGradle.modify { + "$it\n\nkapt.includeCompileClasspath = false" + } + buildAndFail("assemble") { + assertOutputDoesNotContain("Annotation processors discovery from compile classpath is deprecated") + } + } + } + + @DisplayName("up-to-date checks are working") + @GradleTest + fun testKaptAvoidance(gradleVersion: GradleVersion) { + project("kaptAvoidance".withPrefix, gradleVersion) { + + subProject("app").buildGradle.modify { + "$it\n\nkapt.includeCompileClasspath = true" + } + + build("assemble") { + assertTasksExecuted( + ":app:kaptGenerateStubsKotlin", + ":app:kaptKotlin", + ":app:compileKotlin", + ":app:compileJava", + ":lib:compileKotlin" + ) + } + + val original = "fun foo() = 0" + val replacement1 = "fun foo() = 1" + val replacement2 = "fun foo() = 2" + val libClassKt = subProject("lib").kotlinSourcesDir().resolve("LibClass.kt") + libClassKt.modify { it.checkedReplace(original, replacement1) } + + build("assemble") { + assertTasksExecuted( + ":lib:compileKotlin", + ":app:kaptGenerateStubsKotlin", + ":app:kaptKotlin" + ) + } + + // enable discovery + subProject("app").buildGradle.modify { + it.replace( + "kapt.includeCompileClasspath = true", + "kapt.includeCompileClasspath = false" + ) + } + build("assemble") { + assertTasksUpToDate(":lib:compileKotlin") + assertTasksExecuted( + ":app:kaptGenerateStubsKotlin", + ":app:kaptKotlin" + ) + } + + libClassKt.modify { it.checkedReplace(replacement1, replacement2) } + build("assemble") { + assertTasksExecuted(":lib:compileKotlin", ":app:kaptGenerateStubsKotlin") + assertTasksUpToDate(":app:kaptKotlin") + } + } + } + + @DisplayName("KT19179 and KT37241: kapt is not skipped and does not generate stubs for non-existent entries") + @GradleTest + fun testKt19179andKt37241(gradleVersion: GradleVersion) { + project("kt19179".withPrefix, gradleVersion) { + + build("build") { + val processorSubproject = subProject("processor") + processorSubproject + .assertFileInProjectExists("build/tmp/kapt3/classes/main/META-INF/services/javax.annotation.processing.Processor") + + val processorJar = processorSubproject.projectPath.resolve("build/libs/processor.jar") + assertFileExists(processorJar) + + val zip = ZipFile(processorJar.toFile()) + @Suppress("ConvertTryFinallyToUseCall") + try { + assert(zip.getEntry("META-INF/services/javax.annotation.processing.Processor") != null) { + "Generated annotation processor jar file does not contain processor service entry!" + } + } finally { + zip.close() + } + + assertTasksExecuted( + ":processor:kaptGenerateStubsKotlin", + ":processor:kaptKotlin", + ":app:kaptGenerateStubsKotlin", + ":app:kaptKotlin" + ) + + // Test for KT-37241, check the that non-existent classpath entry is filtered out: + assertOutputDoesNotContain("Classpath entry points to a non-existent location") + } + + val testKt = subProject("app").kotlinSourcesDir().resolve("Test.kt") + testKt.modify { text -> + assert("SomeClass()" in text) + text.replace("SomeClass()", "SomeClass(); val a = 5") + } + + build("build") { + assertTasksUpToDate( + ":processor:kaptGenerateStubsKotlin", + ":processor:kaptKotlin", + ":app:kaptKotlin" + ) + assertTasksExecuted(":app:kaptGenerateStubsKotlin") + } + + testKt.modify { text -> + "$text\n\nfun t() {}" + } + + build("build") { + assertTasksUpToDate(":processor:kaptGenerateStubsKotlin", ":processor:kaptKotlin") + assertTasksExecuted(":app:kaptGenerateStubsKotlin", ":app:kaptKotlin") + } + } + } + + @DisplayName("Dependency on kapt module should not resolve all configurations") + @GradleTest + fun testDependencyOnKaptModule(gradleVersion: GradleVersion) { + project("simpleProject", gradleVersion) { + includeOtherProjectAsSubmodule("simple", "kapt2") + buildGradle.append("\ndependencies { implementation project(':simple') }") + + testResolveAllConfigurations() + } + } + + @DisplayName("kapt works with old MPP") + @GradleTest + fun testMPPKaptPresence(gradleVersion: GradleVersion) { + project("mpp-kapt-presence".withPrefix, gradleVersion) { + + build("build") { + assertTasksExecuted(":dac:jdk:kaptGenerateStubsKotlin", ":dac:jdk:compileKotlin") + } + } + } + + @DisplayName("KT-31127: processor using Filer api does not break 'javaCompile' task") + @GradleTest + fun testKotlinProcessorUsingFiler(gradleVersion: GradleVersion) { + project("kotlinProject", gradleVersion) { + buildGradle.modify { + val subStringBeforePlugins = it.substringBefore("}") + val subStringAfterPlugins = it.substringAfter("}") + + """ + |$subStringBeforePlugins + | id 'org.jetbrains.kotlin.kapt' + |} + |$subStringAfterPlugins + | + |dependencies { + | kapt "org.jetbrains.kotlin:annotation-processor-example:${"$"}kotlin_version" + | implementation "org.jetbrains.kotlin:annotation-processor-example:${"$"}kotlin_version" + |} + """.trimMargin() + } + + // The test must not contain any java sources in order to detect the issue. + assertEquals(emptyList(), projectPath.resolve("src").allJavaSources) + kotlinSourcesDir().resolve("Dummy.kt").modify { + it.replace("class Dummy", "@example.KotlinFilerGenerated class Dummy") + } + + build("build") { + assertFileInProjectExists("build/generated/source/kapt/main/demo/DummyGenerated.kt") + assertTasksExecuted(":compileKotlin") + assertTasksNoSource(":compileJava") + } + } + } + + @DisplayName("should do annotation processing when 'sourceCompatibility = 8' and JDK is 11+") + @JdkVersions(versions = [JavaVersion.VERSION_11]) + @GradleWithJdkTest + fun testSimpleWithJdk11AndSourceLevel8( + gradleVersion: GradleVersion, + jdk: JdkVersions.ProvidedJdk + ) { + project( + "simple".withPrefix, + gradleVersion, + buildJdk = jdk.location + ) { + buildGradle.append( + "\nsourceCompatibility = '8'" + ) + + build("assemble") { + assertTasksExecuted(":kaptKotlin", ":kaptGenerateStubsKotlin") + assertOutputContains("Javac options: {-source=1.8}") + } + } + } + + @DisplayName("Works with JPMS on JDK 9+") + @JdkVersions(versions = [JavaVersion.VERSION_1_9]) + @GradleWithJdkTest + fun testJpmsModule( + gradleVersion: GradleVersion, + jdk: JdkVersions.ProvidedJdk + ) { + project( + "jpms-module".withPrefix, + gradleVersion, + buildJdk = jdk.location + ) { + build("assemble") { + assertTasksExecuted(":kaptKotlin", ":kaptGenerateStubsKotlin", ":compileKotlin", ":compileJava") + assertFileInProjectExists("build/generated/source/kapt/main/lab/TestClassGenerated.java") + assertFileExists(kotlinClassesDir().resolve("lab/TestClass.class")) + } + + build("assemble") { + assertTasksUpToDate(":kaptKotlin", ":kaptGenerateStubsKotlin", ":compileKotlin", ":compileJava") + } + + kotlinSourcesDir().resolve("dagger_example/InjectedClass.kt").modify { text -> + text.checkedReplace( + "//placeholder", + "fun someChange() = null" + ) + } + + build("assemble") { + assertTasksExecuted(":kaptKotlin", ":kaptGenerateStubsKotlin", ":compileKotlin", ":compileJava") + } + } + } + + @DisplayName("KT-46651: kapt is tracking source files properly with configuration cache enabled") + @GradleTestVersions(minVersion = TestVersions.Gradle.G_6_7) + @GradleTest + fun kaptGenerateStubsShouldNotCaptureSourcesStateInConfigurationCache(gradleVersion: GradleVersion) { + project( + "incrementalRebuild".withPrefix, + gradleVersion, + buildOptions = defaultBuildOptions.copy( + configurationCache = true, + configurationCacheProblems = BaseGradleIT.ConfigurationCacheProblems.FAIL + ) + ) { + build("assemble") + + javaSourcesDir().resolve("bar/UseBar.kt").apply { modify { it.replace("UseBar", "UseBar1") } - renameTo(parentFile.resolve("UseBar1.kt")) + Files.move(this, parent.resolve("UseBar1.kt")) } - build("assemble", options = buildOptions) { - assertSuccessful() - } + build("assemble") } } - /* Regression test for https://youtrack.jetbrains.com/issue/KT-47347. */ - @Test - fun testChangesToKaptConfigurationDoNotTriggerStubGeneration() { - val project = Project("localAnnotationProcessor", directoryPrefix = "kapt2") + @DisplayName("KT-47347: kapt processors should not be an input files for stub generation") + @GradleTest + fun testChangesToKaptConfigurationDoNotTriggerStubGeneration(gradleVersion: GradleVersion) { + project("localAnnotationProcessor".withPrefix, gradleVersion) { + build("assemble") - project.build("build") { - assertSuccessful() - } + ZipOutputStream(projectPath.resolve("fake_processor.jar").outputStream()).close() + subProject("example").buildGradle.append( + //language=Gradle + """ - ZipOutputStream(project.projectDir.resolve("fake_processor.jar").outputStream()).close() - project.projectDir.resolve("example/build.gradle").appendText( - """ - - dependencies { - kapt files("../fake_processor.jar") + dependencies { + kapt files("../fake_processor.jar") + } + """.trimIndent() + ) + + build("assemble") { + assertTasksExecuted(":example:kaptKotlin") + assertTasksUpToDate(":example:kaptGenerateStubsKotlin") } - """.trimIndent() - ) - - project.build("build") { - assertSuccessful() - assertTasksExecuted(":example:kaptKotlin") - assertTasksUpToDate(":example:kaptGenerateStubsKotlin") } } } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/annotationProcessorAsFqName/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/annotationProcessorAsFqName/build.gradle index c8f7a91b48e..07c4b2dac21 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/annotationProcessorAsFqName/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/annotationProcessorAsFqName/build.gradle @@ -1,17 +1,9 @@ -buildscript { - repositories { - mavenLocal() - mavenCentral() - } - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } +plugins { + id "java" + id "org.jetbrains.kotlin.jvm" + id "org.jetbrains.kotlin.kapt" } -apply plugin: "java" -apply plugin: "kotlin" -apply plugin: "kotlin-kapt" - repositories { mavenLocal() mavenCentral() @@ -24,5 +16,6 @@ kapt { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" kapt "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" +// kapt "org.jetbrains.kotlin:annotation-processor-example:$kotlin_version" implementation "org.jetbrains.kotlin:annotation-processor-example:$kotlin_version" } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/annotationProcessorAsFqName/gradle.properties b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/annotationProcessorAsFqName/gradle.properties deleted file mode 100644 index dc3793168f1..00000000000 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/annotationProcessorAsFqName/gradle.properties +++ /dev/null @@ -1 +0,0 @@ -kapt.verbose=true \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/arguments/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/arguments/build.gradle index 28b325bd558..54fe4ae1607 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/arguments/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/arguments/build.gradle @@ -1,16 +1,8 @@ -buildscript { - repositories { - mavenLocal() - mavenCentral() - } - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } +plugins { + id "org.jetbrains.kotlin.jvm" + id "org.jetbrains.kotlin.kapt" } -apply plugin: "kotlin" -apply plugin: "kotlin-kapt" - repositories { mavenLocal() mavenCentral() diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/arguments/gradle.properties b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/arguments/gradle.properties deleted file mode 100644 index dc3793168f1..00000000000 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/arguments/gradle.properties +++ /dev/null @@ -1 +0,0 @@ -kapt.verbose=true \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/autoService/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/autoService/build.gradle deleted file mode 100644 index 8a7682ed77c..00000000000 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/autoService/build.gradle +++ /dev/null @@ -1,25 +0,0 @@ -buildscript { - repositories { - mavenLocal() - mavenCentral() - } - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - -apply plugin: 'kotlin-kapt' -apply plugin: 'kotlin' - -allprojects { - repositories { - mavenLocal() - mavenCentral() - } -} - -dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" - implementation project(":processor") - kapt project(":processor") -} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/autoService/processor/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/autoService/processor/build.gradle deleted file mode 100644 index 2a8bec13a8a..00000000000 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/autoService/processor/build.gradle +++ /dev/null @@ -1,9 +0,0 @@ -apply plugin: 'kotlin-kapt' -apply plugin: 'kotlin' - -dependencies { - ext.autoServiceVersion = '1.0-rc2' - implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" - implementation "com.google.auto.service:auto-service:$autoServiceVersion" - kapt "com.google.auto.service:auto-service:$autoServiceVersion" -} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/autoService/processor/src/main/kotlin/processor/MyProcessor.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/autoService/processor/src/main/kotlin/processor/MyProcessor.kt deleted file mode 100644 index d674947ed83..00000000000 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/autoService/processor/src/main/kotlin/processor/MyProcessor.kt +++ /dev/null @@ -1,28 +0,0 @@ -package processor - -import com.google.auto.service.AutoService -import javax.annotation.processing.* -import javax.lang.model.SourceVersion -import javax.lang.model.element.TypeElement -import javax.tools.Diagnostic - -@AutoService(Processor::class) -@SupportedAnnotationTypes("annotation.ProcessThis") -@SupportedSourceVersion(SourceVersion.RELEASE_8) -class MyProcessor() : AbstractProcessor() { - - private var fileCreated = false - - override fun process(annotations: Set, - roundEnv: RoundEnvironment): Boolean { - processingEnv.messager.printMessage(Diagnostic.Kind.NOTE, "Working!") - if (fileCreated) return true - fileCreated = true - val file = processingEnv.filer.createSourceFile("Check") - file.openWriter().use { - it.appendLine("// $annotations") - it.appendLine("public class Check {}") - } - return true - } -} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/autoService/settings.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/autoService/settings.gradle deleted file mode 100644 index 57d0d2be8eb..00000000000 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/autoService/settings.gradle +++ /dev/null @@ -1 +0,0 @@ -rootProject.name = 'kaptbug' include 'processor' \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/autoService/src/main/kotlin/annotation/ProcessThis.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/autoService/src/main/kotlin/annotation/ProcessThis.kt deleted file mode 100644 index 6a067dbcd41..00000000000 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/autoService/src/main/kotlin/annotation/ProcessThis.kt +++ /dev/null @@ -1,3 +0,0 @@ -package annotation - -annotation class ProcessThis diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/autoService/src/main/kotlin/model/Model.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/autoService/src/main/kotlin/model/Model.kt deleted file mode 100644 index 2ebd8dd9129..00000000000 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/autoService/src/main/kotlin/model/Model.kt +++ /dev/null @@ -1,17 +0,0 @@ -package model - -import annotation.ProcessThis - -@ProcessThis -interface Model { - - var a: Int - - var b: Int -} - -@ProcessThis -class Class { - - var a = 0 -} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/generatedDirUpToDate/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/generatedDirUpToDate/build.gradle index 1fd631c588a..db6736f1ead 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/generatedDirUpToDate/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/generatedDirUpToDate/build.gradle @@ -1,17 +1,9 @@ -buildscript { - repositories { - mavenLocal() - mavenCentral() - } - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } +plugins { + id "java" + id "org.jetbrains.kotlin.jvm" + id "org.jetbrains.kotlin.kapt" } -apply plugin: "java" -apply plugin: "kotlin" -apply plugin: "kotlin-kapt" - repositories { mavenLocal() mavenCentral() @@ -21,4 +13,4 @@ dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" implementation "org.jetbrains.kotlin:annotation-processor-example:$kotlin_version" kapt "org.jetbrains.kotlin:annotation-processor-example:$kotlin_version" -} \ No newline at end of file +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/generatedDirUpToDate/gradle.properties b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/generatedDirUpToDate/gradle.properties deleted file mode 100644 index dc3793168f1..00000000000 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/generatedDirUpToDate/gradle.properties +++ /dev/null @@ -1 +0,0 @@ -kapt.verbose=true \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/incrementalRebuild/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/incrementalRebuild/build.gradle index 61d62a5db5b..e64eab1c303 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/incrementalRebuild/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/incrementalRebuild/build.gradle @@ -1,17 +1,9 @@ -buildscript { - repositories { - mavenLocal() - mavenCentral() - } - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } +plugins { + id "java" + id "org.jetbrains.kotlin.jvm" + id "org.jetbrains.kotlin.kapt" } -apply plugin: "java" -apply plugin: "kotlin" -apply plugin: "kotlin-kapt" - repositories { mavenLocal() mavenCentral() diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/inheritedAnnotations/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/inheritedAnnotations/build.gradle index 1fd631c588a..e4dfe3e1ba2 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/inheritedAnnotations/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/inheritedAnnotations/build.gradle @@ -1,17 +1,8 @@ -buildscript { - repositories { - mavenLocal() - mavenCentral() - } - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } +plugins { + id "org.jetbrains.kotlin.jvm" + id "org.jetbrains.kotlin.kapt" } -apply plugin: "java" -apply plugin: "kotlin" -apply plugin: "kotlin-kapt" - repositories { mavenLocal() mavenCentral() diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/inheritedAnnotations/gradle.properties b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/inheritedAnnotations/gradle.properties deleted file mode 100644 index dc3793168f1..00000000000 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/inheritedAnnotations/gradle.properties +++ /dev/null @@ -1 +0,0 @@ -kapt.verbose=true \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/javacIsLoadedOnce/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/javacIsLoadedOnce/build.gradle index f37b00da1c9..56aea34f419 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/javacIsLoadedOnce/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/javacIsLoadedOnce/build.gradle @@ -1,13 +1,3 @@ -buildscript { - repositories { - mavenLocal() - mavenCentral() - } - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - subprojects { repositories { mavenLocal() diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/javacIsLoadedOnce/gradle.properties b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/javacIsLoadedOnce/gradle.properties index 15df4c94604..af3585dcc2c 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/javacIsLoadedOnce/gradle.properties +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/javacIsLoadedOnce/gradle.properties @@ -1,3 +1,2 @@ -kapt.verbose=true kapt.workers.log.classloading=true kapt.workers.isolation=process \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/javacIsLoadedOnce/module1/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/javacIsLoadedOnce/module1/build.gradle index ed7870af24f..48d4edac96e 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/javacIsLoadedOnce/module1/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/javacIsLoadedOnce/module1/build.gradle @@ -1,5 +1,7 @@ -apply plugin: "kotlin" -apply plugin: "kotlin-kapt" +plugins { + id "org.jetbrains.kotlin.jvm" + id "org.jetbrains.kotlin.kapt" +} dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/javacIsLoadedOnce/module2/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/javacIsLoadedOnce/module2/build.gradle index b19935abe56..f2234b8e600 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/javacIsLoadedOnce/module2/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/javacIsLoadedOnce/module2/build.gradle @@ -1,5 +1,7 @@ -apply plugin: "kotlin" -apply plugin: "kotlin-kapt" +plugins { + id "org.jetbrains.kotlin.jvm" + id "org.jetbrains.kotlin.kapt" +} dependencies { implementation project(":module1") diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/jpms-module/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/jpms-module/build.gradle index d9649af2a8e..14ae9088e5f 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/jpms-module/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/jpms-module/build.gradle @@ -1,18 +1,9 @@ -buildscript { - repositories { - mavenLocal() - mavenCentral() - gradlePluginPortal() - } - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } +plugins { + id "java" + id "org.jetbrains.kotlin.jvm" + id "org.jetbrains.kotlin.kapt" } -apply plugin: "java" -apply plugin: "kotlin" -apply plugin: "kotlin-kapt" - repositories { mavenLocal() mavenCentral() diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/jpms-module/gradle.properties b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/jpms-module/gradle.properties deleted file mode 100644 index dc3793168f1..00000000000 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/jpms-module/gradle.properties +++ /dev/null @@ -1 +0,0 @@ -kapt.verbose=true \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kaptAvoidance/settings.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kaptAvoidance/settings.gradle index 1b7aef22c7b..3cbe2493511 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kaptAvoidance/settings.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kaptAvoidance/settings.gradle @@ -1,13 +1 @@ -pluginManagement { - repositories { - mavenLocal() - mavenCentral() - } - - plugins { - id "org.jetbrains.kotlin.jvm" version "$kotlin_version" - id "org.jetbrains.kotlin.kapt" version "$kotlin_version" - } -} - -include ':app', ':lib' \ No newline at end of file +include ':app', ':lib' diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kaptOutputKotlinCode/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kaptOutputKotlinCode/build.gradle index c210a8099ed..cd3cd54d437 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kaptOutputKotlinCode/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kaptOutputKotlinCode/build.gradle @@ -1,16 +1,8 @@ -buildscript { - repositories { - mavenLocal() - mavenCentral() - } - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } +plugins { + id 'org.jetbrains.kotlin.jvm' + id 'org.jetbrains.kotlin.kapt' } -apply plugin: 'kotlin' -apply plugin: 'kotlin-kapt' - repositories { mavenLocal() mavenCentral() diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kaptSkipped/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kaptSkipped/build.gradle index 6dadebe737d..f1b329d201a 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kaptSkipped/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kaptSkipped/build.gradle @@ -1,17 +1,9 @@ -buildscript { - repositories { - mavenLocal() - mavenCentral() - } - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } +plugins { + id "java" + id "org.jetbrains.kotlin.jvm" + id "org.jetbrains.kotlin.kapt" } -apply plugin: "java" -apply plugin: "kotlin" -apply plugin: "kotlin-kapt" - repositories { mavenLocal() mavenCentral() diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kt18799/app/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kt18799/app/build.gradle index ef169b56aa4..153d0eac7f7 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kt18799/app/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kt18799/app/build.gradle @@ -1,5 +1,7 @@ -apply plugin: 'kotlin' -apply plugin: 'kotlin-kapt' +plugins { + id 'org.jetbrains.kotlin.jvm' + id 'org.jetbrains.kotlin.kapt' +} dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kt18799/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kt18799/build.gradle index fb846c9b928..d1ecd597b59 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kt18799/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kt18799/build.gradle @@ -1,13 +1,3 @@ -buildscript { - repositories { - mavenLocal() - mavenCentral() - } - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - allprojects { repositories { mavenCentral() diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kt19179/api/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kt19179/api/build.gradle index ec4d9520028..439508cdc9a 100755 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kt19179/api/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kt19179/api/build.gradle @@ -1,5 +1,6 @@ -apply plugin: 'kotlin' -apply plugin: 'java-library' +plugins { + id 'org.jetbrains.kotlin.jvm' +} dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kt19179/app/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kt19179/app/build.gradle index b8dcf98ba89..56b62020636 100755 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kt19179/app/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kt19179/app/build.gradle @@ -1,5 +1,7 @@ -apply plugin: 'kotlin' -apply plugin: 'kotlin-kapt' +plugins { + id 'org.jetbrains.kotlin.jvm' + id 'org.jetbrains.kotlin.kapt' +} dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kt19179/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kt19179/build.gradle index 53b939ac079..17bd6a55884 100755 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kt19179/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kt19179/build.gradle @@ -1,14 +1,3 @@ -buildscript { - repositories { - mavenLocal() - mavenCentral() - } - - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - subprojects { repositories { mavenLocal() diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kt19179/processor/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kt19179/processor/build.gradle index cf7cbe94884..89a6d4a7ef1 100755 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kt19179/processor/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kt19179/processor/build.gradle @@ -1,5 +1,7 @@ -apply plugin: 'kotlin' -apply plugin: 'kotlin-kapt' +plugins { + id 'org.jetbrains.kotlin.jvm' + id 'org.jetbrains.kotlin.kapt' +} dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/localAnnotationProcessor/annotation-processor/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/localAnnotationProcessor/annotation-processor/build.gradle index 997529b1808..e70d712d251 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/localAnnotationProcessor/annotation-processor/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/localAnnotationProcessor/annotation-processor/build.gradle @@ -1,4 +1,6 @@ -apply plugin: 'kotlin' +plugins { + id 'org.jetbrains.kotlin.jvm' +} dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/localAnnotationProcessor/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/localAnnotationProcessor/build.gradle index 18d8b21ba8e..92c3a75d342 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/localAnnotationProcessor/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/localAnnotationProcessor/build.gradle @@ -1,13 +1,3 @@ -buildscript { - repositories { - mavenLocal() - mavenCentral() - } - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - allprojects { repositories { mavenLocal() diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/localAnnotationProcessor/example/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/localAnnotationProcessor/example/build.gradle index d025536c09e..0204b488d92 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/localAnnotationProcessor/example/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/localAnnotationProcessor/example/build.gradle @@ -1,5 +1,8 @@ -apply plugin: 'kotlin' -apply plugin: 'kotlin-kapt' +plugins { + id 'org.jetbrains.kotlin.jvm' + id 'org.jetbrains.kotlin.kapt' + id 'idea' +} dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" @@ -12,8 +15,6 @@ dependencies { testImplementation'junit:junit:4.12' } -apply plugin: 'idea' - idea { module { sourceDirs += files('build/generated/source/kapt/main', 'build/generated/source/kaptKotlin/main') diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/localAnnotationProcessor/gradle.properties b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/localAnnotationProcessor/gradle.properties deleted file mode 100644 index dc3793168f1..00000000000 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/localAnnotationProcessor/gradle.properties +++ /dev/null @@ -1 +0,0 @@ -kapt.verbose=true \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/locationMapping/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/locationMapping/build.gradle index 84c74041bee..67ed7d519ad 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/locationMapping/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/locationMapping/build.gradle @@ -1,17 +1,9 @@ -buildscript { - repositories { - mavenLocal() - mavenCentral() - } - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } +plugins { + id "java" + id "org.jetbrains.kotlin.jvm" + id "org.jetbrains.kotlin.kapt" } -apply plugin: "java" -apply plugin: "kotlin" -apply plugin: "kotlin-kapt" - repositories { mavenLocal() mavenCentral() diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/nokapt/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/nokapt/build.gradle index 91f617f0b35..ff9c44fc776 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/nokapt/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/nokapt/build.gradle @@ -1,16 +1,8 @@ -buildscript { - repositories { - mavenLocal() - mavenCentral() - } - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } +plugins { + id "java" + id "org.jetbrains.kotlin.jvm" } -apply plugin: "java" -apply plugin: "kotlin" - repositories { mavenLocal() mavenCentral() diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/simple/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/simple/build.gradle index ff391bc3af9..fa18e15cd65 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/simple/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/simple/build.gradle @@ -1,17 +1,9 @@ -buildscript { - repositories { - mavenLocal() - mavenCentral() - } - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } +plugins { + id "java" + id "org.jetbrains.kotlin.jvm" + id "org.jetbrains.kotlin.kapt" } -apply plugin: "java" -apply plugin: "kotlin" -apply plugin: "kotlin-kapt" - repositories { mavenLocal() mavenCentral() diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/simple/gradle.properties b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/simple/gradle.properties deleted file mode 100644 index dc3793168f1..00000000000 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/simple/gradle.properties +++ /dev/null @@ -1 +0,0 @@ -kapt.verbose=true \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/simple/settings.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/simple/settings.gradle index 3d37bf0b81c..e003591d778 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/simple/settings.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/simple/settings.gradle @@ -1,10 +1,12 @@ pluginManagement { + // Required for KaptModeIT. Remove it once these tests will be migrated. repositories { mavenLocal() - mavenCentral() + gradlePluginPortal() } plugins { id "org.jetbrains.kotlin.jvm" version "$kotlin_version" + id "org.jetbrains.kotlin.kapt" version "$kotlin_version" } } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinProject/settings.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinProject/settings.gradle index 3934435f618..801a3318090 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinProject/settings.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinProject/settings.gradle @@ -10,5 +10,6 @@ pluginManagement { plugins { id "org.jetbrains.kotlin.jvm" version "$kotlin_version" id "org.jetbrains.kotlin.plugin.allopen" version "$kotlin_version" + id "org.jetbrains.kotlin.kapt" version "$kotlin_version" } } \ No newline at end of file