Skip to content

Commit 233df8a

Browse files
dovchinnikovAbdullinAM
authored andcommitted
#470 fix eager task realization
* Replace `tasks.withType<T> {}` with `tasks.withType<T>().configureEach {}` * Add test that checks lazy realization
1 parent 5546dc7 commit 233df8a

File tree

2 files changed

+33
-2
lines changed

2 files changed

+33
-2
lines changed

hot-reload-gradle-plugin/src/main/kotlin/org/jetbrains/compose/reload/gradle/tasksBase.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ interface ComposeHotReloadRunTask : ComposeHotTask
3131
interface ComposeHotReloadOtherTask : ComposeHotTask
3232

3333
internal fun Project.configureComposeHotReloadTasks() {
34-
tasks.withType<ComposeHotTask> {
35-
group = when (this) {
34+
tasks.withType<ComposeHotTask>().configureEach {
35+
it.group = when (it) {
3636
is ComposeHotReloadOtherTask -> COMPOSE_HOT_RELOAD_OTHER_GROUP
3737
is ComposeHotReloadRunTask -> COMPOSE_HOT_RELOAD_RUN_GROUP
3838
}

hot-reload-gradle-plugin/src/test/kotlin/org/jetbrains/compose/reload/gradle/tests/ComposeHotTaskTest.kt

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import kotlin.io.path.exists
2626
import kotlin.io.path.readText
2727
import kotlin.io.path.writeText
2828
import kotlin.test.Test
29+
import kotlin.test.assertTrue
2930
import kotlin.test.fail
3031

3132
class ComposeHotTaskTest {
@@ -130,6 +131,36 @@ class ComposeHotTaskTest {
130131
}
131132
}
132133

134+
@Test
135+
fun `test - lazy realization of hot reload tasks`() {
136+
val project = ProjectBuilder.builder().build()
137+
project.plugins.apply("org.jetbrains.kotlin.multiplatform")
138+
project.plugins.apply("org.jetbrains.kotlin.plugin.compose")
139+
project.plugins.apply("org.jetbrains.compose")
140+
project.plugins.apply("org.jetbrains.compose.hot-reload")
141+
142+
project.kotlinMultiplatformOrNull?.jvm()
143+
144+
val realizedDuringConfiguration = mutableSetOf<String>()
145+
project.tasks.configureEach { task ->
146+
if (task is ComposeHotTask) {
147+
realizedDuringConfiguration.add(task.name)
148+
}
149+
}
150+
assertTrue(
151+
realizedDuringConfiguration.isEmpty(),
152+
"Tasks were realized during configuration:\n$realizedDuringConfiguration"
153+
)
154+
155+
project.evaluate()
156+
157+
val allHotTasks = project.tasks.filterIsInstance<ComposeHotTask>()
158+
assertTrue(
159+
allHotTasks.isNotEmpty(),
160+
"Compose Hot Reload tasks were not realized:\n$allHotTasks"
161+
)
162+
}
163+
133164
private fun tasksInPackage(): List<Task> {
134165
val project = ProjectBuilder.builder().build()
135166
project.plugins.apply("org.jetbrains.kotlin.multiplatform")

0 commit comments

Comments
 (0)