Skip to content

Commit

Permalink
Fix Preview compatibility with Gradle configuration cache (#2470)
Browse files Browse the repository at this point in the history
* Fix Preview compatability with Gradle configuiration cache

Fixes #2376

* A test for Gradle configuration cache

And Gradle 7.5.1
  • Loading branch information
igordmn authored Nov 14, 2022
1 parent 51d9937 commit f35e286
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,12 @@ abstract class AbstractConfigureDesktopPreviewTask : AbstractComposeDesktopTask(
project.providers.gradleProperty("compose.desktop.preview.ide.port")

@get:InputFiles
internal val uiTooling = project.configurations.detachedConfiguration(
internal val uiTooling: FileCollection = project.configurations.detachedConfiguration(
project.dependencies.create("org.jetbrains.compose.ui:ui-tooling-desktop:${ComposeBuildConfig.composeVersion}")
).apply { isTransitive = false }

@get:InputFiles
internal val hostClasspath = project.configurations.detachedConfiguration(
internal val hostClasspath: FileCollection = project.configurations.detachedConfiguration(
project.dependencies.create("org.jetbrains.compose:preview-rpc:${ComposeBuildConfig.composeVersion}")
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,12 @@ class GradlePluginTest : GradlePluginTestBase() {
}

@Test
fun configurePreview() {
fun configurePreviewWithoutConfigurationCache() = configurePreview(withConfigurationCache = false)

@Test
fun configurePreviewWithConfigurationCache() = configurePreview(withConfigurationCache = true)

private fun configurePreview(withConfigurationCache: Boolean) {
val isAlive = AtomicBoolean(true)
val receivedConfigCount = AtomicInteger(0)
val port = AtomicInteger(-1)
Expand All @@ -45,7 +50,7 @@ class GradlePluginTest : GradlePluginTestBase() {
soTimeout = 10_000
}
port.set(serverSocket.localPort)
try {
serverSocket.use {
while (isAlive.get()) {
try {
val socket = serverSocket.accept()
Expand All @@ -63,9 +68,6 @@ class GradlePluginTest : GradlePluginTestBase() {
}
}
}

} finally {
serverSocket.close()
}
}

Expand All @@ -80,7 +82,7 @@ class GradlePluginTest : GradlePluginTestBase() {
}

try {
testConfigureDesktopPreivewImpl(port.get())
testConfigureDesktopPreviewImpl(port.get(), withConfigurationCache)
} finally {
isAlive.set(false)
connectionThread.interrupt()
Expand All @@ -94,20 +96,31 @@ class GradlePluginTest : GradlePluginTestBase() {
}
}

private fun testConfigureDesktopPreivewImpl(port: Int) {
private fun testConfigureDesktopPreviewImpl(port: Int, withConfigurationCache: Boolean) {
check(port > 0) { "Invalid port: $port" }
with(testProject(TestProjects.jvmPreview)) {
val portProperty = "-Pcompose.desktop.preview.ide.port=$port"
val previewTargetProperty = "-Pcompose.desktop.preview.target=PreviewKt.ExamplePreview"
val jvmTask = ":jvm:configureDesktopPreview"
gradle(jvmTask, portProperty, previewTargetProperty)
val configurationCacheArg = "--configuration-cache"
val jvmRunner = if (withConfigurationCache) {
gradle(jvmTask, portProperty, previewTargetProperty, configurationCacheArg)
} else {
gradle(jvmTask, portProperty, previewTargetProperty)
}
jvmRunner
.build()
.checks { check ->
check.taskOutcome(jvmTask, TaskOutcome.SUCCESS)
}

val mppTask = ":mpp:configureDesktopPreviewDesktop"
gradle(mppTask, portProperty, previewTargetProperty)
val mppRunner = if (withConfigurationCache) {
gradle(mppTask, portProperty, previewTargetProperty, configurationCacheArg)
} else {
gradle(mppTask, portProperty, previewTargetProperty)
}
mppRunner
.build()
.checks { check ->
check.taskOutcome(mppTask, TaskOutcome.SUCCESS)
Expand Down
2 changes: 1 addition & 1 deletion gradle-plugins/gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

0 comments on commit f35e286

Please sign in to comment.