fix: scanner would not ignore hidden directories properly

This commit is contained in:
Gauthier Roebroeck 2021-01-09 11:16:41 +08:00
parent 2d72b47cdf
commit 1cbcdaa0a1
2 changed files with 24 additions and 1 deletions

View file

@ -45,7 +45,7 @@ class FileSystemScanner(
object : FileVisitor<Path> {
override fun preVisitDirectory(dir: Path, attrs: BasicFileAttributes?): FileVisitResult {
logger.trace { "preVisit: $dir" }
if (!Files.isHidden(dir) && komgaProperties.librariesScanDirectoryExclusions.any { exclude ->
if (Files.isHidden(dir) || komgaProperties.librariesScanDirectoryExclusions.any { exclude ->
dir.toString().contains(exclude, true)
}
) return FileVisitResult.SKIP_SUBTREE

View file

@ -129,6 +129,29 @@ class FileSystemScannerTest {
}
}
@Test
fun `given directory structure with hidden directories when scanning then hidden directories are not returned`() {
Jimfs.newFileSystem(Configuration.unix()).use { fs ->
// given
val root = fs.getPath("/root")
Files.createDirectory(root)
val dir1 = makeSubDir(root, "dir1", listOf("comic.cbz"))
makeSubDir(dir1, "subdir1", listOf("comic2.cbz"))
val hidden = makeSubDir(root, ".hidden", listOf("hidden.cbz"))
makeSubDir(hidden, "subhidden", listOf("hidden2.cbz"))
// when
val scan = scanner.scanRootFolder(root)
// then
assertThat(scan).hasSize(2)
assertThat(scan.keys.map { it.name }).containsExactlyInAnyOrder("dir1", "subdir1")
assertThat(scan.values.flatMap { list -> list.map { it.name } }).containsExactlyInAnyOrder("comic", "comic2")
}
}
@Test
fun `given directory structure with hidden files when scanning then hidden files are not returned`() {
Jimfs.newFileSystem(Configuration.unix()).use { fs ->