@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.gradle
8
8
import org.gradle.api.logging.LogLevel
9
9
import org.gradle.util.GradleVersion
10
10
import org.jetbrains.kotlin.gradle.testbase.*
11
+ import org.jetbrains.kotlin.test.TestMetadata
11
12
import org.junit.jupiter.api.DisplayName
12
13
import org.junit.jupiter.api.io.TempDir
13
14
import java.nio.file.Path
@@ -20,6 +21,7 @@ class ComposeIT : KGPBaseTest() {
20
21
@DisplayName(" Should not affect Android project where compose is not enabled" )
21
22
@AndroidGradlePluginTests
22
23
@GradleAndroidTest
24
+ @TestMetadata(" AndroidSimpleApp" )
23
25
fun testAndroidDisabledCompose (
24
26
gradleVersion : GradleVersion ,
25
27
agpVersion : String ,
@@ -51,6 +53,7 @@ class ComposeIT : KGPBaseTest() {
51
53
52
54
build(" assembleDebug" ) {
53
55
assertOutputDoesNotContain(" Detected Android Gradle Plugin compose compiler configuration" )
56
+ assertOutputDoesNotContain(APPLY_COMPOSE_SUGGESTION )
54
57
assertCompilerArgument(
55
58
" :compileDebugKotlin" ,
56
59
" -P plugin:androidx.compose.compiler.plugins.kotlin:generateFunctionKeyMetaClasses=false," +
@@ -68,6 +71,7 @@ class ComposeIT : KGPBaseTest() {
68
71
@DisplayName(" Should work correctly when compose in Android is enabled" )
69
72
@AndroidGradlePluginTests
70
73
@GradleAndroidTest
74
+ @TestMetadata(" AndroidSimpleComposeApp" )
71
75
fun testAndroidWithCompose (
72
76
gradleVersion : GradleVersion ,
73
77
agpVersion : String ,
@@ -81,13 +85,15 @@ class ComposeIT : KGPBaseTest() {
81
85
) {
82
86
build(" assembleDebug" ) {
83
87
assertOutputContains(" Detected Android Gradle Plugin compose compiler configuration" )
88
+ assertOutputDoesNotContain(APPLY_COMPOSE_SUGGESTION )
84
89
}
85
90
}
86
91
}
87
92
88
93
@DisplayName(" Should not break build cache relocation" )
89
94
@AndroidGradlePluginTests
90
95
@GradleAndroidTest
96
+ @TestMetadata(" AndroidSimpleComposeApp" )
91
97
fun testAndroidBuildCacheRelocation (
92
98
gradleVersion : GradleVersion ,
93
99
agpVersion : String ,
@@ -117,6 +123,59 @@ class ComposeIT : KGPBaseTest() {
117
123
}
118
124
}
119
125
126
+ @DisplayName(" Should work with JB Compose plugin" )
127
+ @AndroidGradlePluginTests
128
+ @GradleAndroidTest
129
+ @AndroidTestVersions(minVersion = TestVersions .AGP .AGP_80 )
130
+ @TestMetadata(" JBComposeApp" )
131
+ fun testJBCompose (
132
+ gradleVersion : GradleVersion ,
133
+ agpVersion : String ,
134
+ providedJdk : JdkVersions .ProvidedJdk ,
135
+ ) {
136
+ project(
137
+ projectName = " JBComposeApp" ,
138
+ gradleVersion = gradleVersion,
139
+ buildJdk = providedJdk.location,
140
+ buildOptions = defaultBuildOptions.copy(androidVersion = agpVersion)
141
+ ) {
142
+ build(" :composeApp:assembleDebug" ) {
143
+ assertOutputDoesNotContain(" Detected Android Gradle Plugin compose compiler configuration" )
144
+ assertOutputDoesNotContain(APPLY_COMPOSE_SUGGESTION )
145
+ }
146
+
147
+ build(" :composeApp:desktopJar" ) {
148
+ assertOutputDoesNotContain(APPLY_COMPOSE_SUGGESTION )
149
+ }
150
+ }
151
+ }
152
+
153
+ @DisplayName(" Should not suggest apply Kotlin compose plugin in JB Compose plugin" )
154
+ @AndroidGradlePluginTests
155
+ @GradleAndroidTest
156
+ @AndroidTestVersions(minVersion = TestVersions .AGP .AGP_80 )
157
+ @TestMetadata(" JBComposeApp" )
158
+ fun testAndroidJBComposeNoSuggestion (
159
+ gradleVersion : GradleVersion ,
160
+ agpVersion : String ,
161
+ providedJdk : JdkVersions .ProvidedJdk ,
162
+ ) {
163
+ project(
164
+ projectName = " JBComposeApp" ,
165
+ gradleVersion = gradleVersion,
166
+ buildJdk = providedJdk.location,
167
+ buildOptions = defaultBuildOptions.copy(androidVersion = agpVersion)
168
+ ) {
169
+ subProject(" composeApp" ).buildGradleKts.modify {
170
+ it.replace(" kotlin(\" plugin.compose\" )" , " " )
171
+ }
172
+
173
+ buildAndFail(" :composeApp:assembleDebug" ) {
174
+ assertOutputDoesNotContain(APPLY_COMPOSE_SUGGESTION )
175
+ }
176
+ }
177
+ }
178
+
120
179
private fun androidComposeAppProjectWithLocalCacheEnabled (
121
180
gradleVersion : GradleVersion ,
122
181
agpVersion : String ,
@@ -154,4 +213,9 @@ class ComposeIT : KGPBaseTest() {
154
213
enableLocalBuildCache(localCacheDir)
155
214
}
156
215
}
216
+
217
+ companion object {
218
+ private const val APPLY_COMPOSE_SUGGESTION =
219
+ " The Compose compiler plugin is now a part of Kotlin, please apply the 'org.jetbrains.kotlin.plugin.compose' Gradle plugin to enable it."
220
+ }
157
221
}
0 commit comments