Enable cache redirector for old tests setup.
^KT-47185 Fixed
This commit is contained in:
+4
-1
@@ -13,6 +13,7 @@ import org.jdom.output.XMLOutputter
|
|||||||
import org.jetbrains.kotlin.gradle.model.ModelContainer
|
import org.jetbrains.kotlin.gradle.model.ModelContainer
|
||||||
import org.jetbrains.kotlin.gradle.model.ModelFetcherBuildAction
|
import org.jetbrains.kotlin.gradle.model.ModelFetcherBuildAction
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinJsCompilerType
|
import org.jetbrains.kotlin.gradle.plugin.KotlinJsCompilerType
|
||||||
|
import org.jetbrains.kotlin.gradle.testbase.enableCacheRedirector
|
||||||
import org.jetbrains.kotlin.gradle.util.*
|
import org.jetbrains.kotlin.gradle.util.*
|
||||||
import org.jetbrains.kotlin.test.RunnerWithMuteInDatabase
|
import org.jetbrains.kotlin.test.RunnerWithMuteInDatabase
|
||||||
import org.jetbrains.kotlin.test.util.trimTrailingWhitespaces
|
import org.jetbrains.kotlin.test.util.trimTrailingWhitespaces
|
||||||
@@ -277,12 +278,14 @@ abstract class BaseGradleIT {
|
|||||||
open val resourcesRoot = File(resourcesRootFile, "testProject/$resourceDirName")
|
open val resourcesRoot = File(resourcesRootFile, "testProject/$resourceDirName")
|
||||||
val projectDir = File(workingDir.canonicalFile, projectName)
|
val projectDir = File(workingDir.canonicalFile, projectName)
|
||||||
|
|
||||||
open fun setupWorkingDir() {
|
open fun setupWorkingDir(enableCacheRedirector: Boolean = true) {
|
||||||
if (!projectDir.isDirectory || projectDir.listFiles().isEmpty()) {
|
if (!projectDir.isDirectory || projectDir.listFiles().isEmpty()) {
|
||||||
copyRecursively(this.resourcesRoot, workingDir)
|
copyRecursively(this.resourcesRoot, workingDir)
|
||||||
if (addHeapDumpOptions) {
|
if (addHeapDumpOptions) {
|
||||||
addHeapDumpOptionsToPropertiesFile()
|
addHeapDumpOptionsToPropertiesFile()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (enableCacheRedirector) projectDir.toPath().enableCacheRedirector()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -684,7 +684,7 @@ open class Kapt3IT : Kapt3BaseIT() {
|
|||||||
fun testDependencyOnKaptModule() = with(Project("simpleProject")) {
|
fun testDependencyOnKaptModule() = with(Project("simpleProject")) {
|
||||||
setupWorkingDir()
|
setupWorkingDir()
|
||||||
|
|
||||||
val kaptProject = Project("simple", directoryPrefix = "kapt2").apply { setupWorkingDir() }
|
val kaptProject = Project("simple", directoryPrefix = "kapt2").apply { setupWorkingDir(false) }
|
||||||
kaptProject.projectDir.copyRecursively(projectDir.resolve("simple"))
|
kaptProject.projectDir.copyRecursively(projectDir.resolve("simple"))
|
||||||
projectDir.resolve("settings.gradle").appendText("include 'simple'")
|
projectDir.resolve("settings.gradle").appendText("include 'simple'")
|
||||||
gradleBuildScript().appendText("\ndependencies { implementation project(':simple') }")
|
gradleBuildScript().appendText("\ndependencies { implementation project(':simple') }")
|
||||||
|
|||||||
+4
-1
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.gradle
|
package org.jetbrains.kotlin.gradle
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.gradle.testbase.enableCacheRedirector
|
||||||
import org.jetbrains.kotlin.gradle.util.modify
|
import org.jetbrains.kotlin.gradle.util.modify
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
@@ -23,12 +24,14 @@ class MppHighlightingTestDataWithGradleIT : BaseGradleIT() {
|
|||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun cleanup() {
|
fun cleanup() {
|
||||||
project.setupWorkingDir()
|
project.setupWorkingDir(false)
|
||||||
project.gradleSettingsScript().modify { it.lines().filter { !it.startsWith("include") }.joinToString("\n") }
|
project.gradleSettingsScript().modify { it.lines().filter { !it.startsWith("include") }.joinToString("\n") }
|
||||||
project.projectDir.resolve("src").deleteRecursively()
|
project.projectDir.resolve("src").deleteRecursively()
|
||||||
project.gradleBuildScript().modify { line ->
|
project.gradleBuildScript().modify { line ->
|
||||||
line.lines().dropLastWhile { it != buildScriptCustomizationMarker }.joinToString("\n")
|
line.lines().dropLastWhile { it != buildScriptCustomizationMarker }.joinToString("\n")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
project.projectDir.toPath().enableCacheRedirector()
|
||||||
}
|
}
|
||||||
|
|
||||||
private val project by lazy { Project("mpp-source-set-hierarchy-analysis") }
|
private val project by lazy { Project("mpp-source-set-hierarchy-analysis") }
|
||||||
|
|||||||
+14
-2
@@ -122,7 +122,7 @@ class NewMultiplatformIT : BaseGradleIT() {
|
|||||||
val libLocalRepoUri = libProject.projectDir.resolve("repo").toURI()
|
val libLocalRepoUri = libProject.projectDir.resolve("repo").toURI()
|
||||||
|
|
||||||
with(appProject) {
|
with(appProject) {
|
||||||
setupWorkingDir()
|
setupWorkingDir(false)
|
||||||
|
|
||||||
// we use `maven { setUrl(...) }` because this syntax actually works both for Groovy and Kotlin DSLs in Gradle
|
// we use `maven { setUrl(...) }` because this syntax actually works both for Groovy and Kotlin DSLs in Gradle
|
||||||
gradleBuildScript().appendText("\nrepositories { maven { setUrl(\"$libLocalRepoUri\") } }")
|
gradleBuildScript().appendText("\nrepositories { maven { setUrl(\"$libLocalRepoUri\") } }")
|
||||||
@@ -176,6 +176,9 @@ class NewMultiplatformIT : BaseGradleIT() {
|
|||||||
gradleBuildScript(libProjectName).takeIf { it.extension == "kts" }?.modify {
|
gradleBuildScript(libProjectName).takeIf { it.extension == "kts" }?.modify {
|
||||||
it.replace(Regex("""\.version\(.*\)"""), "")
|
it.replace(Regex("""\.version\(.*\)"""), "")
|
||||||
}
|
}
|
||||||
|
gradleBuildScript(subproject = libProject.projectDir.name).modify {
|
||||||
|
it.lines().dropLast(4).joinToString(separator = "\n")
|
||||||
|
}
|
||||||
|
|
||||||
build(
|
build(
|
||||||
"clean",
|
"clean",
|
||||||
@@ -381,6 +384,9 @@ class NewMultiplatformIT : BaseGradleIT() {
|
|||||||
gradleBuildScript(libProjectName).takeIf { it.extension == "kts" }?.modify {
|
gradleBuildScript(libProjectName).takeIf { it.extension == "kts" }?.modify {
|
||||||
it.replace(Regex("""\.version\(.*\)"""), "")
|
it.replace(Regex("""\.version\(.*\)"""), "")
|
||||||
}
|
}
|
||||||
|
gradleBuildScript(subproject = libProject.projectDir.name).modify {
|
||||||
|
it.lines().dropLast(4).joinToString(separator = "\n")
|
||||||
|
}
|
||||||
|
|
||||||
build(
|
build(
|
||||||
"clean",
|
"clean",
|
||||||
@@ -911,6 +917,9 @@ class NewMultiplatformIT : BaseGradleIT() {
|
|||||||
libProject.setupWorkingDir()
|
libProject.setupWorkingDir()
|
||||||
|
|
||||||
libProject.projectDir.copyRecursively(projectDir.resolve(libProject.projectDir.name))
|
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}'")
|
projectDir.resolve("settings.gradle").appendText("\ninclude '${libProject.projectDir.name}'")
|
||||||
gradleBuildScript().modify {
|
gradleBuildScript().modify {
|
||||||
it.replace("'com.example:sample-lib:1.0'", "project(':${libProject.projectDir.name}')") +
|
it.replace("'com.example:sample-lib:1.0'", "project(':${libProject.projectDir.name}')") +
|
||||||
@@ -1116,8 +1125,11 @@ class NewMultiplatformIT : BaseGradleIT() {
|
|||||||
|
|
||||||
with(libProject) {
|
with(libProject) {
|
||||||
setupWorkingDir()
|
setupWorkingDir()
|
||||||
appProject.setupWorkingDir()
|
appProject.setupWorkingDir(false)
|
||||||
appProject.projectDir.copyRecursively(projectDir.resolve("sample-app"))
|
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
|
gradleSettingsScript().writeText("include 'sample-app'") // disables feature preview 'GRADLE_METADATA', resets rootProject name
|
||||||
gradleBuildScript("sample-app").modify {
|
gradleBuildScript("sample-app").modify {
|
||||||
|
|||||||
+10
-2
@@ -86,7 +86,7 @@ class VariantAwareDependenciesIT : BaseGradleIT() {
|
|||||||
fun testNonKotlinJvmAppResolvesMppLib() {
|
fun testNonKotlinJvmAppResolvesMppLib() {
|
||||||
val outerProject = Project("sample-lib", gradleVersion, "new-mpp-lib-and-app")
|
val outerProject = Project("sample-lib", gradleVersion, "new-mpp-lib-and-app")
|
||||||
val innerProject = Project("simpleProject").apply {
|
val innerProject = Project("simpleProject").apply {
|
||||||
setupWorkingDir()
|
setupWorkingDir(false)
|
||||||
gradleBuildScript().modify {
|
gradleBuildScript().modify {
|
||||||
it.replace("apply plugin: \"kotlin\"", "")
|
it.replace("apply plugin: \"kotlin\"", "")
|
||||||
.replace("\"org.jetbrains.kotlin:kotlin-stdlib\"", "\"org.jetbrains.kotlin:kotlin-stdlib:\$kotlin_version\"")
|
.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) {
|
internal fun BaseGradleIT.Project.embedProject(other: BaseGradleIT.Project, renameTo: String? = null) {
|
||||||
setupWorkingDir()
|
setupWorkingDir()
|
||||||
other.setupWorkingDir()
|
other.setupWorkingDir(false)
|
||||||
val tempDir = createTempDir(if (isWindows) "" else "BaseGradleIT")
|
val tempDir = createTempDir(if (isWindows) "" else "BaseGradleIT")
|
||||||
val embeddedModuleName = renameTo ?: other.projectName
|
val embeddedModuleName = renameTo ?: other.projectName
|
||||||
try {
|
try {
|
||||||
@@ -359,6 +359,14 @@ internal fun BaseGradleIT.Project.embedProject(other: BaseGradleIT.Project, rena
|
|||||||
} finally {
|
} finally {
|
||||||
check(tempDir.deleteRecursively())
|
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 {
|
testCase.apply {
|
||||||
gradleSettingsScript().appendText("\ninclude(\"$embeddedModuleName\")")
|
gradleSettingsScript().appendText("\ninclude(\"$embeddedModuleName\")")
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -206,7 +206,7 @@ private fun Path.addDefaultBuildFiles() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@OptIn(ExperimentalPathApi::class)
|
@OptIn(ExperimentalPathApi::class)
|
||||||
private fun Path.enableCacheRedirector() {
|
internal fun Path.enableCacheRedirector() {
|
||||||
// Path relative to the current gradle module project dir
|
// Path relative to the current gradle module project dir
|
||||||
val redirectorScript = Paths.get("../../../gradle/cacheRedirector.gradle.kts")
|
val redirectorScript = Paths.get("../../../gradle/cacheRedirector.gradle.kts")
|
||||||
assert(redirectorScript.exists()) {
|
assert(redirectorScript.exists()) {
|
||||||
|
|||||||
Reference in New Issue
Block a user