From cb936dd82e53c317cdd321fb2e55c3dbd7851ea8 Mon Sep 17 00:00:00 2001 From: Sergey Igushkin Date: Mon, 22 Jun 2020 13:29:51 +0300 Subject: [PATCH] Fix internals with symlinked friend paths (KT-35341) The friend paths converted to canonical paths didn't match absolute paths in the compiler code in case of symlinked directories. This fixes a regression. Issue #KT-35341 Fixed --- .../kotlin/gradle/KotlinGradlePluginIT.kt | 19 +++++++++++++++++-- .../jetbrains/kotlin/gradle/tasks/Tasks.kt | 2 +- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt index 5b298ff3cb3..8cf754d7558 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt @@ -25,6 +25,7 @@ import org.jetbrains.kotlin.gradle.util.* import org.jetbrains.kotlin.test.KotlinTestUtils import org.junit.Test import java.io.File +import java.nio.file.Files import java.util.zip.ZipFile import kotlin.test.assertEquals import kotlin.test.assertNotEquals @@ -678,8 +679,22 @@ class KotlinGradleIT : BaseGradleIT() { } @Test - fun testInternalTest() { - Project("internalTest").build("build") { + fun testInternalTest() = with( + Project("internalTest") + ) { + build("build") { + assertSuccessful() + assertReportExists() + assertTasksExecuted(":compileKotlin", ":compileTestKotlin") + } + + // Check KT-35341: use symlinked build dir + val buildDir = projectDir.resolve("build") + buildDir.deleteRecursively() + val externalBuildDir = Files.createTempDirectory(workingDir.toPath(), "externalBuild") + Files.createSymbolicLink(buildDir.toPath(), externalBuildDir) + + build("build") { assertSuccessful() assertReportExists() assertTasksExecuted(":compileKotlin", ":compileTestKotlin") diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt index 54757786199..6ce3b6182a5 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt @@ -256,7 +256,7 @@ abstract class AbstractKotlinCompile() : AbstractKo associateWithTransitiveClosure .flatMap { it.output.classesDirs } .plus(friendArtifacts) - .map { it.canonicalPath }.toTypedArray() + .map { it.absolutePath }.toTypedArray() } }