diff options
Diffstat (limited to 'support/arara/source/src/test/kotlin/org/islandoftex/arara/filehandling/FileSearchingUtilsTest.kt')
-rw-r--r-- | support/arara/source/src/test/kotlin/org/islandoftex/arara/filehandling/FileSearchingUtilsTest.kt | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/support/arara/source/src/test/kotlin/org/islandoftex/arara/filehandling/FileSearchingUtilsTest.kt b/support/arara/source/src/test/kotlin/org/islandoftex/arara/filehandling/FileSearchingUtilsTest.kt new file mode 100644 index 0000000000..47f9916c43 --- /dev/null +++ b/support/arara/source/src/test/kotlin/org/islandoftex/arara/filehandling/FileSearchingUtilsTest.kt @@ -0,0 +1,58 @@ +// SPDX-License-Identifier: BSD-3-Clause +package org.islandoftex.arara.filehandling + +import io.kotlintest.shouldBe +import io.kotlintest.specs.ShouldSpec +import java.nio.file.Files +import java.nio.file.Path +import kotlin.reflect.full.declaredMemberFunctions +import kotlin.reflect.jvm.isAccessible + +class FileSearchingUtilsTest : ShouldSpec({ + // TODO: test implicit extensions + + fun prepareFileSystem(): Path { + val tempDir = Files.createTempDirectory(System.nanoTime().toString()) + tempDir.resolve("quack/quack").toFile().mkdirs() + listOf("quack", "quack/quack", "quack/quack/quack").forEach { + tempDir.resolve("$it.tex").toFile().writeText(" ") + tempDir.resolve("$it.txt").toFile().writeText(" ") + } + return tempDir + } + + should("fail looking up inexistent file") { + val lookupFile = FileSearchingUtils::class.declaredMemberFunctions + .first { it.name == "lookupFile" } + lookupFile.isAccessible = true + lookupFile.call(FileSearchingUtils, "QUACK") shouldBe null + } + + should("fail on existing directory") { + val lookupFile = FileSearchingUtils::class.declaredMemberFunctions + .first { it.name == "lookupFile" } + lookupFile.isAccessible = true + lookupFile.call(FileSearchingUtils, "../buildSrc") shouldBe null + } + + should("find file by extension") { + val tempDir = prepareFileSystem() + FileSearchingUtils.listFilesByExtensions(tempDir.toFile(), + listOf("tex"), false).toSet() shouldBe + setOf(tempDir.resolve("quack.tex").toFile()) + FileSearchingUtils.listFilesByExtensions(tempDir.toFile(), + listOf("tex"), true).toSet() shouldBe + listOf("quack", "quack/quack", "quack/quack/quack") + .map { tempDir.resolve("$it.tex").toFile() }.toSet() + } + should("find file by pattern") { + val tempDir = prepareFileSystem() + FileSearchingUtils.listFilesByPatterns(tempDir.toFile(), + listOf("*q*.txt"), false).toSet() shouldBe + setOf(tempDir.resolve("quack.txt").toFile()) + FileSearchingUtils.listFilesByPatterns(tempDir.toFile(), + listOf("q*.txt"), true).toSet() shouldBe + listOf("quack", "quack/quack", "quack/quack/quack") + .map { tempDir.resolve("$it.txt").toFile() }.toSet() + } +}) |