From e98de36aaaddb3a6e5715e93a3d6c22d1dbcbdf5 Mon Sep 17 00:00:00 2001 From: Yahor Berdnikau Date: Tue, 8 Jun 2021 17:19:51 +0200 Subject: [PATCH] Enable cache redirector for Junit5 tests. ^KT-47185 In Progress --- gradle/cacheRedirector.gradle.kts | 10 ++-- .../kotlin/gradle/testbase/testDsl.kt | 49 +++++++++++++++++++ 2 files changed, 56 insertions(+), 3 deletions(-) diff --git a/gradle/cacheRedirector.gradle.kts b/gradle/cacheRedirector.gradle.kts index c256485b0a9..2453a1aded1 100644 --- a/gradle/cacheRedirector.gradle.kts +++ b/gradle/cacheRedirector.gradle.kts @@ -219,9 +219,13 @@ val checkRepositories: TaskProvider = tasks.register("checkRepositories") } } -tasks.named("checkBuild").configure { - dependsOn(checkRepositories) -} +tasks + .matching { + it.name == "checkBuild" + } + .configureEach { + dependsOn(checkRepositories) + } if (cacheRedirectorEnabled()) { logger.info("Redirecting repositories for $displayName") diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/testDsl.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/testDsl.kt index 3bab8b9a8a0..a22d477e005 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/testDsl.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/testDsl.kt @@ -39,6 +39,7 @@ fun KGPBaseTest.project( projectPathAdditionalSuffix ) projectPath.addDefaultBuildFiles() + projectPath.enableCacheRedirector() if (addHeapDumpOptions) projectPath.addHeapDumpOptions() val gradleRunner = GradleRunner @@ -204,6 +205,54 @@ private fun Path.addDefaultBuildFiles() { } } +@OptIn(ExperimentalPathApi::class) +private fun Path.enableCacheRedirector() { + // Path relative to the current gradle module project dir + val redirectorScript = Paths.get("../../../gradle/cacheRedirector.gradle.kts") + assert(redirectorScript.exists()) { + "$redirectorScript does not exist! Please provide correct path to 'cacheRedirector.gradle.kts' file." + } + val gradleDir = resolve("gradle").also { it.createDirectories() } + redirectorScript.copyTo(gradleDir.resolve("cacheRedirector.gradle.kts")) + + resolve("gradle.properties") + .also { if (!it.exists()) it.createFile() } + .appendText( + """ + + cacheRedirectorEnabled=true + + """.trimIndent() + ) + + when { + resolve("build.gradle").exists() -> { + //language=Groovy + resolve("build.gradle").appendText( + """ + + allprojects { + apply from: "${'$'}rootDir/gradle/cacheRedirector.gradle.kts" + } + + """.trimIndent() + ) + } + resolve("build.gradle.kts").exists() -> { + //language=Groovy + resolve("build.gradle.kts").appendText( + """ + + allprojects { + apply(from = "${'$'}rootDir/gradle/cacheRedirector.gradle.kts") + } + + """.trimIndent() + ) + } + } +} + @OptIn(ExperimentalPathApi::class) private fun Path.addHeapDumpOptions() { val propertiesFile = resolve("gradle.properties")