From 840c6d98957a39d70e06e06a57160ca148b8df9a Mon Sep 17 00:00:00 2001 From: Alex Chepurnoy Date: Mon, 27 Jul 2020 17:41:34 +0300 Subject: [PATCH] FileUtils improved --- .../scorex/testkit/utils/FileUtils.scala | 39 ++++++------------- 1 file changed, 11 insertions(+), 28 deletions(-) diff --git a/testkit/src/main/scala/scorex/testkit/utils/FileUtils.scala b/testkit/src/main/scala/scorex/testkit/utils/FileUtils.scala index 142b19eb8..0004fdd6c 100644 --- a/testkit/src/main/scala/scorex/testkit/utils/FileUtils.scala +++ b/testkit/src/main/scala/scorex/testkit/utils/FileUtils.scala @@ -1,24 +1,24 @@ package scorex.testkit.utils -import java.nio.file.Path +import java.nio.file.{Files, Path} +import scala.collection.JavaConverters._ import org.scalacheck.Gen +import scala.util.Try + trait FileUtils { protected val randomPrefixLength = 10 val basePath: Path = java.nio.file.Files.createTempDirectory(s"scorex-${System.nanoTime()}") - sys.addShutdownHook { - remove(basePath) - } - - def createTempFile: java.io.File = { - val dir = createTempDir - val prefix = scala.util.Random.alphanumeric.take(randomPrefixLength).mkString - val suffix = scala.util.Random.alphanumeric.take(randomPrefixLength).mkString - val file = java.nio.file.Files.createTempFile(dir.toPath, prefix, suffix).toFile + private def createTempDirForPrefix(prefix: String): java.io.File = { + val path = java.nio.file.Files.createTempDirectory(basePath, prefix) + sys.addShutdownHook { + remove(path) + } + val file = path.toFile file.deleteOnExit() file } @@ -37,24 +37,7 @@ trait FileUtils { * Recursively remove all the files and directories in `root` */ def remove(root: Path): Unit = { - - @SuppressWarnings(Array("org.wartremover.warts.Recursion")) - def deleteRecursive(dir: java.io.File): Unit = { - for (file <- dir.listFiles) { - if (file.isDirectory){ - deleteRecursive(file) - } - file.delete() - } - } - - deleteRecursive(root.toFile) - } - - private def createTempDirForPrefix(prefix: String): java.io.File = { - val file = java.nio.file.Files.createTempDirectory(basePath, prefix).toFile - file.deleteOnExit() - file + Files.walk(root).iterator().asScala.toSeq.reverse.foreach(path => Try(Files.delete(path))) } }