diff --git a/komga/src/main/kotlin/org/gotson/komga/domain/service/FileSystemScanner.kt b/komga/src/main/kotlin/org/gotson/komga/domain/service/FileSystemScanner.kt index c9dd6a123..7feaefd62 100644 --- a/komga/src/main/kotlin/org/gotson/komga/domain/service/FileSystemScanner.kt +++ b/komga/src/main/kotlin/org/gotson/komga/domain/service/FileSystemScanner.kt @@ -45,7 +45,7 @@ class FileSystemScanner( object : FileVisitor { 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 diff --git a/komga/src/test/kotlin/org/gotson/komga/domain/service/FileSystemScannerTest.kt b/komga/src/test/kotlin/org/gotson/komga/domain/service/FileSystemScannerTest.kt index 7c2e2a80c..be210d892 100644 --- a/komga/src/test/kotlin/org/gotson/komga/domain/service/FileSystemScannerTest.kt +++ b/komga/src/test/kotlin/org/gotson/komga/domain/service/FileSystemScannerTest.kt @@ -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 ->