summaryrefslogtreecommitdiff
path: root/support/arara/source/src/test/kotlin/org/islandoftex/arara/filehandling/FileSearchingUtilsTest.kt
diff options
context:
space:
mode:
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.kt58
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()
+ }
+})