From 7b1db6992e3c4b7b4fb7d4022d96d484b75c2628 Mon Sep 17 00:00:00 2001 From: Yahor Berdnikau Date: Tue, 8 Jun 2021 17:34:12 +0200 Subject: [PATCH] Enable cache redirector for old tests setup. ^KT-47185 Fixed --- .../org/jetbrains/kotlin/gradle/BaseGradleIT.kt | 5 ++++- .../org/jetbrains/kotlin/gradle/Kapt3IT.kt | 2 +- .../MppHighlightingTestDataWithGradleIT.kt | 5 ++++- .../kotlin/gradle/NewMultiplatformIT.kt | 16 ++++++++++++++-- .../kotlin/gradle/VariantAwareDependenciesIT.kt | 12 ++++++++++-- .../jetbrains/kotlin/gradle/testbase/testDsl.kt | 2 +- 6 files changed, 34 insertions(+), 8 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt index 82302986340..d92c914a711 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt @@ -13,6 +13,7 @@ import org.jdom.output.XMLOutputter import org.jetbrains.kotlin.gradle.model.ModelContainer import org.jetbrains.kotlin.gradle.model.ModelFetcherBuildAction import org.jetbrains.kotlin.gradle.plugin.KotlinJsCompilerType +import org.jetbrains.kotlin.gradle.testbase.enableCacheRedirector import org.jetbrains.kotlin.gradle.util.* import org.jetbrains.kotlin.test.RunnerWithMuteInDatabase import org.jetbrains.kotlin.test.util.trimTrailingWhitespaces @@ -277,12 +278,14 @@ abstract class BaseGradleIT { open val resourcesRoot = File(resourcesRootFile, "testProject/$resourceDirName") val projectDir = File(workingDir.canonicalFile, projectName) - open fun setupWorkingDir() { + open fun setupWorkingDir(enableCacheRedirector: Boolean = true) { if (!projectDir.isDirectory || projectDir.listFiles().isEmpty()) { copyRecursively(this.resourcesRoot, workingDir) if (addHeapDumpOptions) { addHeapDumpOptionsToPropertiesFile() } + + if (enableCacheRedirector) projectDir.toPath().enableCacheRedirector() } } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt index 016b2c4418a..5caa7e4c98b 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt @@ -684,7 +684,7 @@ open class Kapt3IT : Kapt3BaseIT() { fun testDependencyOnKaptModule() = with(Project("simpleProject")) { setupWorkingDir() - val kaptProject = Project("simple", directoryPrefix = "kapt2").apply { setupWorkingDir() } + val kaptProject = Project("simple", directoryPrefix = "kapt2").apply { setupWorkingDir(false) } kaptProject.projectDir.copyRecursively(projectDir.resolve("simple")) projectDir.resolve("settings.gradle").appendText("include 'simple'") gradleBuildScript().appendText("\ndependencies { implementation project(':simple') }") diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/MppHighlightingTestDataWithGradleIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/MppHighlightingTestDataWithGradleIT.kt index 17ab26742b8..9dbbc0abc97 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/MppHighlightingTestDataWithGradleIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/MppHighlightingTestDataWithGradleIT.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.gradle +import org.jetbrains.kotlin.gradle.testbase.enableCacheRedirector import org.jetbrains.kotlin.gradle.util.modify import org.junit.Before import org.junit.Test @@ -23,12 +24,14 @@ class MppHighlightingTestDataWithGradleIT : BaseGradleIT() { @Before fun cleanup() { - project.setupWorkingDir() + project.setupWorkingDir(false) project.gradleSettingsScript().modify { it.lines().filter { !it.startsWith("include") }.joinToString("\n") } project.projectDir.resolve("src").deleteRecursively() project.gradleBuildScript().modify { line -> line.lines().dropLastWhile { it != buildScriptCustomizationMarker }.joinToString("\n") } + + project.projectDir.toPath().enableCacheRedirector() } private val project by lazy { Project("mpp-source-set-hierarchy-analysis") } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt index 284e5e3fbd2..efa557ce9ed 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt @@ -122,7 +122,7 @@ class NewMultiplatformIT : BaseGradleIT() { val libLocalRepoUri = libProject.projectDir.resolve("repo").toURI() with(appProject) { - setupWorkingDir() + setupWorkingDir(false) // we use `maven { setUrl(...) }` because this syntax actually works both for Groovy and Kotlin DSLs in Gradle gradleBuildScript().appendText("\nrepositories { maven { setUrl(\"$libLocalRepoUri\") } }") @@ -176,6 +176,9 @@ class NewMultiplatformIT : BaseGradleIT() { gradleBuildScript(libProjectName).takeIf { it.extension == "kts" }?.modify { it.replace(Regex("""\.version\(.*\)"""), "") } + gradleBuildScript(subproject = libProject.projectDir.name).modify { + it.lines().dropLast(4).joinToString(separator = "\n") + } build( "clean", @@ -381,6 +384,9 @@ class NewMultiplatformIT : BaseGradleIT() { gradleBuildScript(libProjectName).takeIf { it.extension == "kts" }?.modify { it.replace(Regex("""\.version\(.*\)"""), "") } + gradleBuildScript(subproject = libProject.projectDir.name).modify { + it.lines().dropLast(4).joinToString(separator = "\n") + } build( "clean", @@ -911,6 +917,9 @@ class NewMultiplatformIT : BaseGradleIT() { libProject.setupWorkingDir() libProject.projectDir.copyRecursively(projectDir.resolve(libProject.projectDir.name)) + gradleBuildScript(libProject.projectDir.name).modify { + it.lines().dropLast(4).joinToString(separator = "\n") + } projectDir.resolve("settings.gradle").appendText("\ninclude '${libProject.projectDir.name}'") gradleBuildScript().modify { it.replace("'com.example:sample-lib:1.0'", "project(':${libProject.projectDir.name}')") + @@ -1116,8 +1125,11 @@ class NewMultiplatformIT : BaseGradleIT() { with(libProject) { setupWorkingDir() - appProject.setupWorkingDir() + appProject.setupWorkingDir(false) appProject.projectDir.copyRecursively(projectDir.resolve("sample-app")) + gradleBuildScript("sample-app").modify { + it.lines().dropLast(4).joinToString(separator = "\n") + } gradleSettingsScript().writeText("include 'sample-app'") // disables feature preview 'GRADLE_METADATA', resets rootProject name gradleBuildScript("sample-app").modify { diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/VariantAwareDependenciesIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/VariantAwareDependenciesIT.kt index 837e8e00580..0ff33738d3c 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/VariantAwareDependenciesIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/VariantAwareDependenciesIT.kt @@ -86,7 +86,7 @@ class VariantAwareDependenciesIT : BaseGradleIT() { fun testNonKotlinJvmAppResolvesMppLib() { val outerProject = Project("sample-lib", gradleVersion, "new-mpp-lib-and-app") val innerProject = Project("simpleProject").apply { - setupWorkingDir() + setupWorkingDir(false) gradleBuildScript().modify { it.replace("apply plugin: \"kotlin\"", "") .replace("\"org.jetbrains.kotlin:kotlin-stdlib\"", "\"org.jetbrains.kotlin:kotlin-stdlib:\$kotlin_version\"") @@ -350,7 +350,7 @@ class VariantAwareDependenciesIT : BaseGradleIT() { internal fun BaseGradleIT.Project.embedProject(other: BaseGradleIT.Project, renameTo: String? = null) { setupWorkingDir() - other.setupWorkingDir() + other.setupWorkingDir(false) val tempDir = createTempDir(if (isWindows) "" else "BaseGradleIT") val embeddedModuleName = renameTo ?: other.projectName try { @@ -359,6 +359,14 @@ internal fun BaseGradleIT.Project.embedProject(other: BaseGradleIT.Project, rena } finally { check(tempDir.deleteRecursively()) } + if (projectName == other.projectName) { + val embeddedModuleDir = projectDir.resolve(embeddedModuleName) + val buildFile = embeddedModuleDir.resolve("build.gradle").takeIf { it.exists() } + ?: embeddedModuleDir.resolve("build.gradle.kts") + buildFile.modify { + it.lines().dropLast(4).joinToString(separator = "\n") + } + } testCase.apply { gradleSettingsScript().appendText("\ninclude(\"$embeddedModuleName\")") 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 a22d477e005..7e25b22f58c 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 @@ -206,7 +206,7 @@ private fun Path.addDefaultBuildFiles() { } @OptIn(ExperimentalPathApi::class) -private fun Path.enableCacheRedirector() { +internal fun Path.enableCacheRedirector() { // Path relative to the current gradle module project dir val redirectorScript = Paths.get("../../../gradle/cacheRedirector.gradle.kts") assert(redirectorScript.exists()) {