Enable cache redirector for old tests setup.

^KT-47185 Fixed
This commit is contained in:
Yahor Berdnikau
2021-06-08 17:34:12 +02:00
committed by Space
parent e98de36aaa
commit 7b1db6992e
6 changed files with 34 additions and 8 deletions
@@ -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()
}
}
@@ -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') }")
@@ -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") }
@@ -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 {
@@ -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\")")
@@ -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()) {