-
Notifications
You must be signed in to change notification settings - Fork 5.6k
/
Kapt4IT.kt
119 lines (93 loc) · 4.45 KB
/
Kapt4IT.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
/*
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.gradle
import org.gradle.util.GradleVersion
import org.jetbrains.kotlin.gradle.testbase.*
import org.junit.jupiter.api.Disabled
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.condition.OS
import kotlin.io.path.appendText
import kotlin.io.path.name
import kotlin.io.path.walk
@OsCondition(enabledOnCI = [OS.LINUX])
@DisplayName("Kapt 4 base checks")
@Disabled("Causes OOM on Windows")
class Kapt4IT : Kapt3IT() {
override val defaultBuildOptions = super.defaultBuildOptions.copyEnsuringK2()
override fun TestProject.customizeProject() {
forceKapt4()
}
@Disabled("Currently failing. See KT-60950")
override fun kaptGenerateStubsShouldNotCaptureSourcesStateInConfigurationCache(gradleVersion: GradleVersion) {}
@Disabled("Currently failing. See KT-60951")
override fun testChangeClasspathICRebuild(gradleVersion: GradleVersion) {}
@Disabled("Doesn't make sense in Kapt 4")
override fun useGeneratedKotlinSourceK2(gradleVersion: GradleVersion) {}
@Disabled("Doesn't make sense in Kapt 4")
override fun fallBackModeWithUseK2(gradleVersion: GradleVersion) {}
@Disabled("Doesn't make sense in Kapt 4")
override fun fallBackModeWithLanguageVersion2_0(gradleVersion: GradleVersion) {}
@Disabled("Doesn't make sense in Kapt 4")
override fun useK2KaptProperty(gradleVersion: GradleVersion) {}
@Disabled("Doesn't make sense in Kapt 4")
override fun testRepeatableAnnotationsWithOldJvmBackend(gradleVersion: GradleVersion) {}
@DisplayName("KT-61879: K2 KAPT works with proguarded compiler jars and enum class")
@GradleTest
fun testEnumClass(gradleVersion: GradleVersion) {
project("simple".withPrefix, gradleVersion) {
javaSourcesDir().resolve("test.kt").appendText("\nenum class TestEnum")
build("build") {
assertKaptSuccessful()
assertFileExists(kotlinClassesDir().resolve("example/TestEnum.class"))
}
}
}
}
@OsCondition(enabledOnCI = [OS.LINUX])
@DisplayName("Kapt 4 with classloaders cache")
class Kapt4ClassLoadersCacheIT : Kapt3ClassLoadersCacheIT() {
override val defaultBuildOptions = super.defaultBuildOptions.copyEnsuringK2()
override fun TestProject.customizeProject() {
forceKapt4()
}
@Disabled("Doesn't make sense in Kapt 4")
override fun useGeneratedKotlinSourceK2(gradleVersion: GradleVersion) {}
@Disabled("Doesn't make sense in Kapt 4")
override fun fallBackModeWithUseK2(gradleVersion: GradleVersion) {}
@Disabled("Doesn't make sense in Kapt 4")
override fun fallBackModeWithLanguageVersion2_0(gradleVersion: GradleVersion) {}
@Disabled("Doesn't make sense in Kapt 4")
override fun testRepeatableAnnotationsWithOldJvmBackend(gradleVersion: GradleVersion) {}
@Disabled("Doesn't work in 2.0. Neither with Kapt 3 nor with Kapt 4")
override fun testMPPKaptPresence(gradleVersion: GradleVersion) {}
@Disabled("Currently failing. See KT-60950")
override fun kaptGenerateStubsShouldNotCaptureSourcesStateInConfigurationCache(gradleVersion: GradleVersion) {}
@Disabled("Currently failing. See KT-60951")
override fun testChangeClasspathICRebuild(gradleVersion: GradleVersion) {}
}
fun TestProject.forceKapt4() {
projectPath.walk().forEach {
when (it.fileName.name) {
"build.gradle" -> it.appendText(
"""
pluginManager.withPlugin('kotlin') {
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
compilerOptions.freeCompilerArgs.addAll(['-Xuse-kapt4', '-Xsuppress-version-warnings'])
}
}
""".trimIndent()
)
"build.gradle.kts" -> it.appendText(
"""
pluginManager.withPlugin("kotlin") {
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile::class.java).configureEach {
compilerOptions.freeCompilerArgs.addAll(listOf("-Xuse-kapt4", "-Xsuppress-version-warnings"))
}
}
""".trimIndent()
)
}
}
}