[Gradle] Fix kapt tests compatability with Gradle 8.0

^KT-59588 Fixed
This commit is contained in:
Yahor Berdnikau
2023-07-17 10:28:44 +02:00
committed by Space Team
parent 61a9dcd8e6
commit faa74d124f
10 changed files with 45 additions and 31 deletions
@@ -46,6 +46,9 @@ class Kapt3AndGradleDaemon : KGPDaemonsBaseTest() {
}
@DisplayName("Annotation processor class should be loaded only once")
// Since Gradle 8.0 toolchain is always configured.
// Which forces Kapt tasks to run using workers with process isolation,
// which is not compatible with classloaders caching.
@GradleTestVersions(maxVersion = TestVersions.Gradle.G_7_6)
@GradleTest
fun testAnnotationProcessorClassIsLoadedOnce(gradleVersion: GradleVersion) {
@@ -893,8 +893,6 @@ open class Kapt3IT : Kapt3BaseIT() {
}
@DisplayName("KT-31127: processor using Filer api does not break 'javaCompile' task")
@GradleTestVersions(maxVersion = TestVersions.Gradle.G_7_6)
@AndroidTestVersions(maxVersion = TestVersions.AGP.AGP_74)
@GradleTest
fun testKotlinProcessorUsingFiler(gradleVersion: GradleVersion) {
project("kotlinProject", gradleVersion) {
@@ -931,7 +929,6 @@ open class Kapt3IT : Kapt3BaseIT() {
@DisplayName("should do annotation processing when 'sourceCompatibility = 8' and JDK is 11+")
@JdkVersions(versions = [JavaVersion.VERSION_11])
@GradleTestVersions(maxVersion = TestVersions.Gradle.G_7_6)
@GradleWithJdkTest
fun testSimpleWithJdk11AndSourceLevel8(
gradleVersion: GradleVersion,
@@ -946,6 +943,14 @@ open class Kapt3IT : Kapt3BaseIT() {
"\nsourceCompatibility = '8'"
)
// because Java sourceCompatibility is fixed JVM target will different with JDK 11 on Gradle 8
// as the toolchain by default will use the Gradle JDK version
gradleProperties.appendText(
"""
|kotlin.jvm.target.validation.mode=warning
""".trimMargin()
)
build("assemble") {
assertTasksExecuted(":kaptKotlin", ":kaptGenerateStubsKotlin")
assertOutputContains("Javac options: {-source=1.8}")
@@ -93,7 +93,6 @@ open class KaptIncrementalWithAggregatingApt : KaptIncrementalIT() {
@DisplayName("Incremental changes in JDK9+")
@JdkVersions(versions = [JavaVersion.VERSION_1_9])
@GradleTestVersions(maxVersion = TestVersions.Gradle.G_7_6)
@GradleWithJdkTest
fun testIncrementalChangesWithJdk9(gradleVersion: GradleVersion, jdk: JdkVersions.ProvidedJdk) {
kaptProject(gradleVersion, buildJdk = jdk.location) {
@@ -166,9 +166,11 @@ open class KaptIncrementalWithIsolatingApt : KaptIncrementalIT() {
@DisplayName("KT-33617: sources in compile classpath jars")
@JdkVersions(versions = [JavaVersion.VERSION_11])
@GradleTestVersions(maxVersion = TestVersions.Gradle.G_7_6)
@GradleWithJdkTest
fun testSourcesInCompileClasspathJars(gradleVersion: GradleVersion, jdk: JdkVersions.ProvidedJdk) {
fun testSourcesInCompileClasspathJars(
gradleVersion: GradleVersion,
jdk: JdkVersions.ProvidedJdk
) {
kaptProject(gradleVersion, buildJdk = jdk.location) {
// create jar with .class and .java file for the same type
ZipOutputStream(projectPath.resolve("lib-with-sources.jar").outputStream()).use {
@@ -299,6 +301,13 @@ open class KaptIncrementalWithIsolatingApt : KaptIncrementalIT() {
buildOptions = defaultBuildOptions.copy(androidVersion = agpVersion),
buildJdk = providedJdk.location
) {
// Remove the once minimal supported AGP version will be 8.1.0: https://issuetracker.google.com/issues/260059413
gradleProperties.appendText(
"""
|kotlin.jvm.target.validation.mode=warning
""".trimMargin()
)
build("clean", ":mylibrary:assembleDebug")
subProject("baseLibrary")
@@ -11,10 +11,14 @@ import org.jetbrains.kotlin.gradle.Kapt3BaseIT
import org.jetbrains.kotlin.gradle.testbase.*
import org.junit.jupiter.api.DisplayName
import java.io.File
import kotlin.io.path.appendText
@DisplayName("android with kapt3 external dependencies tests")
@AndroidGradlePluginTests
class Kapt3AndroidExternalIT : Kapt3BaseIT() {
// Deprecated and doesn't work with Gradle 8 + AGP 8, so keeping max Gradle version as 7.6
// For example: https://github.com/JakeWharton/butterknife/issues/1686
@DisplayName("kapt works with butterknife")
@GradleTestVersions(maxVersion = TestVersions.Gradle.G_7_6)
@AndroidTestVersions(maxVersion = TestVersions.AGP.AGP_74)
@@ -129,8 +133,6 @@ class Kapt3AndroidExternalIT : Kapt3BaseIT() {
}
@DisplayName("kapt works with databinding")
@GradleTestVersions(maxVersion = TestVersions.Gradle.G_7_6)
@AndroidTestVersions(maxVersion = TestVersions.AGP.AGP_74)
@GradleAndroidTest
fun testDatabinding(
gradleVersion: GradleVersion,
@@ -144,6 +146,13 @@ class Kapt3AndroidExternalIT : Kapt3BaseIT() {
// TODO: remove the `if` when we drop support for [TestVersions.AGP.AGP_42]
buildJdk = if (jdkVersion.version >= JavaVersion.VERSION_11) jdkVersion.location else File(System.getProperty("jdk11Home"))
) {
// Remove the once minimal supported AGP version will be 8.1.0: https://issuetracker.google.com/issues/260059413
gradleProperties.appendText(
"""
|kotlin.jvm.target.validation.mode=warning
""".trimMargin()
)
build(
"assembleDebug", "assembleAndroidTest",
) {
@@ -36,8 +36,6 @@ class Kapt3AndroidIT : Kapt3BaseIT() {
}
@DisplayName("KT-25374: kapt doesn't fail with anonymous classes with IC")
@GradleTestVersions(maxVersion = TestVersions.Gradle.G_7_6)
@AndroidTestVersions(maxVersion = TestVersions.AGP.AGP_74)
@GradleAndroidTest
fun testICWithAnonymousClasses(
gradleVersion: GradleVersion,
@@ -50,6 +48,12 @@ class Kapt3AndroidIT : Kapt3BaseIT() {
buildOptions = defaultBuildOptions.copy(androidVersion = agpVersion),
buildJdk = jdkVersion.location
) {
gradleProperties.appendText(
"""
|kotlin.jvm.target.validation.mode=warning
""".trimMargin()
)
build("assembleDebug") {
assertKaptSuccessful()
}
@@ -121,8 +125,6 @@ class Kapt3AndroidIT : Kapt3BaseIT() {
}
@DisplayName("KT-31127: kapt doesn't break JavaCompile when using Filer API")
@GradleTestVersions(maxVersion = TestVersions.Gradle.G_7_6)
@AndroidTestVersions(maxVersion = TestVersions.AGP.AGP_74)
@GradleAndroidTest
fun testKotlinProcessorUsingFiler(
gradleVersion: GradleVersion,
@@ -135,6 +137,7 @@ class Kapt3AndroidIT : Kapt3BaseIT() {
buildOptions = defaultBuildOptions.copy(androidVersion = agpVersion),
buildJdk = jdkVersion.location
) {
// Remove the once minimal supported AGP version will be 8.1.0: https://issuetracker.google.com/issues/260059413
//language=properties
gradleProperties.append(
"""
@@ -144,11 +147,13 @@ class Kapt3AndroidIT : Kapt3BaseIT() {
)
buildGradle.appendText(
//language=groovy
"""
apply plugin: 'kotlin-kapt'
android {
libraryVariants.all {
it.getGenerateBuildConfigProvider().get().enabled = false
libraryVariants.configureEach {
def generateTaskProvider = it.getGenerateBuildConfigProvider()
if (generateTaskProvider != null) generateTaskProvider.configure { enabled = false }
}
}
@@ -26,11 +26,6 @@ android {
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility 1.8
targetCompatibility 1.8
}
}
dependencies {
@@ -23,12 +23,6 @@ android {
minifyEnabled false
}
}
compileOptions {
sourceCompatibility 1.8
targetCompatibility 1.8
}
}
dependencies {
@@ -1,4 +1,4 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.maw.library">
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application>
<activity android:name="org.maw.library.BlankActivity"/>
</application>
@@ -12,11 +12,6 @@ repositories {
}
}
java {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation "org.jetbrains.kotlin:annotation-processor-example:$kotlin_version"