diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinDaemonIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinDaemonIT.kt index 4c38526e084..4b3477f5b7a 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinDaemonIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinDaemonIT.kt @@ -16,12 +16,10 @@ package org.jetbrains.kotlin.gradle -import org.jetbrains.kotlin.compilerRunner.COULD_NOT_CONNECT_TO_DAEMON_MESSAGE -import org.jetbrains.kotlin.compilerRunner.CREATED_SESSION_FILE_PREFIX -import org.jetbrains.kotlin.compilerRunner.DELETED_SESSION_FILE_PREFIX -import org.jetbrains.kotlin.compilerRunner.EXISTING_SESSION_FILE_PREFIX +import org.jetbrains.kotlin.compilerRunner.* import org.junit.Assert import org.junit.Test +import java.io.File // todo: test client file creation/deletion // todo: test daemon start (does not start every build) @@ -77,4 +75,19 @@ class KotlinDaemonIT : BaseGradleIT() { Assert.assertArrayEquals("Sessions should not be deleted (incremental build)", deletedSessions, emptyArray()) } } + + @Test + fun testClientFileIsDeletedOnExit() { + val project = Project("kotlinProject", GRADLE_VERSION) + val options = defaultBuildOptions().copy(withDaemon = false) + + project.build("assemble", options = options) { + val regex = Regex("(?m)($CREATED_CLIENT_FILE_PREFIX|$EXISTING_CLIENT_FILE_PREFIX)(.+)$") + val clientFiles = regex.findAll(output).toList().map { File(it.groupValues[2]) } + assert(clientFiles.isNotEmpty()) { "No client files in log" } + clientFiles.forEach { clientFile -> + assert(!clientFile.exists()) { "Client file $clientFile is expected to be deleted!" } + } + } + } } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerRunner.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerRunner.kt index 1719567a6b0..3f24873e7fc 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerRunner.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerRunner.kt @@ -304,11 +304,11 @@ internal class GradleCompilerRunner(private val project: Project) : KotlinCompil val log = project.logger if (clientIsAliveFlagFile == null || !clientIsAliveFlagFile!!.exists()) { val projectName = project.rootProject.name.normalizeForFlagFile() - clientIsAliveFlagFile = FileUtil.createTempFile("kotlin-compiler-in-$projectName-", ".alive") - log.kotlinDebug { CREATED_CLIENT_FILE_PREFIX + clientIsAliveFlagFile!!.relativeToRoot(project) } + clientIsAliveFlagFile = FileUtil.createTempFile("kotlin-compiler-in-$projectName-", ".alive", /*deleteOnExit =*/ true) + log.kotlinDebug { CREATED_CLIENT_FILE_PREFIX + clientIsAliveFlagFile!!.canonicalPath } } else { - log.kotlinDebug { EXISTING_CLIENT_FILE_PREFIX + clientIsAliveFlagFile!!.relativeToRoot(project) } + log.kotlinDebug { EXISTING_CLIENT_FILE_PREFIX + clientIsAliveFlagFile!!.canonicalPath } } return clientIsAliveFlagFile!! @@ -329,7 +329,7 @@ internal class GradleCompilerRunner(private val project: Project) : KotlinCompil val log = project.logger if (sessionFlagFile == null || !sessionFlagFile!!.exists()) { val sessionFilesDir = sessionsDir(project).apply { mkdirs() } - sessionFlagFile = FileUtil.createTempFile(sessionFilesDir, "kotlin-compiler-", ".salive") + sessionFlagFile = FileUtil.createTempFile(sessionFilesDir, "kotlin-compiler-", ".salive", /*deleteOnExit =*/ true) log.kotlinDebug { CREATED_SESSION_FILE_PREFIX + sessionFlagFile!!.relativeToRoot(project) } } else {