From b308ce3f657cdb648a704f47ea8908cf83cb5a1f Mon Sep 17 00:00:00 2001 From: "Aleksei.Cherepanov" Date: Fri, 4 Mar 2022 17:13:56 +0300 Subject: [PATCH] Fix Configuration cache tests after ee756638 Fix flaky tests: * ConfigurationCacheIT.testInstantExecutionWithBuildSrc * ConfigurationCacheIT.testInstantExecutionWithIncludedBuildPlugin #KT-51374 Fixed --- .../kotlin/gradle/utils/fileUtils.kt | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/utils/fileUtils.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/utils/fileUtils.kt index 61d062a72ac..6c90cfb5291 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/utils/fileUtils.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/utils/fileUtils.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.gradle.utils +import org.gradle.api.InvalidUserCodeException import org.gradle.api.Project import java.io.File import java.io.IOException @@ -30,16 +31,18 @@ internal fun Iterable.toPathsArray(): Array = map { it.canonicalPath }.toTypedArray() internal fun newTmpFile(prefix: String, suffix: String? = null, directory: File? = null, deleteOnExit: Boolean = true): File { - val tempDir = directory - ?: System.getProperty("java.io.tmpdir", null)?.trim()?.ifEmpty { null }?.let { Paths.get(it) }?.toFile() - ?: throw IOException("Temporary directory not specified") + return try { + (if (directory == null) Files.createTempFile(prefix, suffix) else Files.createTempFile(directory.toPath(), prefix, suffix)) + } catch (e: NoSuchFileException) { + val parentDir = e.file.parentFile - if (tempDir.isFile) throw IOException("Temp folder $tempDir is not a directory") - if (!tempDir.isDirectory) { - if (!tempDir.mkdirs()) throw IOException("Could not create temp directory $tempDir") - } + if (parentDir.isFile) throw IOException("Temp folder $parentDir is not a directory") + if (!parentDir.isDirectory) { + if (!parentDir.mkdirs()) throw IOException("Could not create temp directory $parentDir") + } - return Files.createTempFile(tempDir.toPath(), prefix, suffix).toFile().apply { if (deleteOnExit) deleteOnExit() } + Files.createTempFile(parentDir.toPath(), prefix, suffix) + }.toFile().apply { if (deleteOnExit) deleteOnExit() } } internal fun File.isParentOf(childCandidate: File, strict: Boolean = false): Boolean {