diff --git a/utbot-core/src/main/kotlin/org/utbot/common/FileUtil.kt b/utbot-core/src/main/kotlin/org/utbot/common/FileUtil.kt index bb4936b8da..4bb386ae7b 100644 --- a/utbot-core/src/main/kotlin/org/utbot/common/FileUtil.kt +++ b/utbot-core/src/main/kotlin/org/utbot/common/FileUtil.kt @@ -64,20 +64,23 @@ object FileUtil { * Deletes all the files and folders from the java unit-test temp directory that are older than [daysLimit]. */ fun clearTempDirectory(daysLimit: Int) { - val currentTimeInMillis = System.currentTimeMillis() - - val files = utBotTempDirectory.toFile().listFiles() ?: return + (utBotTempDirectory.toFile().listFiles() ?: return).filter { isOld(it, daysLimit) } + .forEach { it.deleteRecursively() } + } - files.filter { - val creationTime = Files.readAttributes(it.toPath(), BasicFileAttributes::class.java).creationTime() - TimeUnit.MILLISECONDS.toDays(currentTimeInMillis - creationTime.toMillis()) > daysLimit - }.forEach { it.deleteRecursively() } + private fun isOld(it: File, daysLimit: Int): Boolean { + val creationTime = Files.readAttributes(it.toPath(), BasicFileAttributes::class.java).creationTime() + return TimeUnit.MILLISECONDS.toDays(System.currentTimeMillis() - creationTime.toMillis()) > daysLimit } fun createTempDirectory(prefix: String): Path { return createTempDirectory(utBotTempDirectory, prefix) } + fun createTempFile(prefix: String, suffix: String) : Path { + return Files.createTempFile(utBotTempDirectory, prefix, suffix) + } + /** * Copy the class file for given [classes] to temporary folder. * It can be used for Soot analysis. diff --git a/utbot-framework-api/src/main/kotlin/org/utbot/framework/plugin/api/Api.kt b/utbot-framework-api/src/main/kotlin/org/utbot/framework/plugin/api/Api.kt index ae4fa70b32..ae9921257e 100644 --- a/utbot-framework-api/src/main/kotlin/org/utbot/framework/plugin/api/Api.kt +++ b/utbot-framework-api/src/main/kotlin/org/utbot/framework/plugin/api/Api.kt @@ -40,6 +40,7 @@ import java.io.File import java.lang.reflect.Modifier import kotlin.contracts.ExperimentalContracts import kotlin.contracts.contract +import org.utbot.common.FileUtil const val SYMBOLIC_NULL_ADDR: Int = 0 @@ -1303,7 +1304,7 @@ enum class CodegenLanguage( // https://docs.oracle.com/javase/7/docs/technotes/tools/windows/javac.html#commandlineargfile fun isolateCommandLineArgumentsToArgumentFile(arguments: List): String { - val argumentFile = File.createTempFile("cmd-args", "") + val argumentFile = FileUtil.createTempFile("cmd-args", "").toFile() argumentFile.writeText( arguments.joinToString(" ") { // If a filename contains embedded spaces, put the whole filename in double quotes, diff --git a/utbot-framework/src/main/kotlin/org/utbot/engine/selectors/strategies/GraphViz.kt b/utbot-framework/src/main/kotlin/org/utbot/engine/selectors/strategies/GraphViz.kt index 9385fd5ae1..fb603aad14 100644 --- a/utbot-framework/src/main/kotlin/org/utbot/engine/selectors/strategies/GraphViz.kt +++ b/utbot-framework/src/main/kotlin/org/utbot/engine/selectors/strategies/GraphViz.kt @@ -19,6 +19,7 @@ import java.awt.datatransfer.StringSelection import java.io.FileWriter import java.nio.file.Files import java.nio.file.Paths +import org.utbot.common.FileUtil private val logger = KotlinLogging.logger {} @@ -29,7 +30,7 @@ class GraphViz( ) : TraverseGraphStatistics(globalGraph) { // Files - private val graphVisDirectory = Files.createTempDirectory("Graph-vis") + private val graphVisDirectory = FileUtil.createTempDirectory("Graph-vis") private val graphVisPathString = graphVisDirectory.toString() private val graphJs = Paths.get(graphVisPathString, "graph.js").toFile()