fix: scanner should ignore hidden files

This commit is contained in:
Gauthier Roebroeck 2021-01-09 11:11:23 +08:00
parent 52ce9a575a
commit 2d72b47cdf
2 changed files with 23 additions and 0 deletions

View file

@ -16,6 +16,7 @@ import java.nio.file.attribute.BasicFileAttributes
import java.nio.file.attribute.FileTime
import java.time.LocalDateTime
import java.time.ZoneId
import kotlin.io.path.isHidden
import kotlin.streams.asSequence
import kotlin.time.measureTime
@ -72,6 +73,7 @@ class FileSystemScanner(
val books = Files.list(dir).use { dirStream ->
dirStream.asSequence()
.onEach { logger.trace { "GetBooks file: $it" } }
.filterNot { Files.isHidden(it) }
.filter { Files.isReadable(it) }
.filter { Files.isRegularFile(it) }
.filter { supportedExtensions.contains(FilenameUtils.getExtension(it.fileName.toString()).toLowerCase()) }

View file

@ -129,6 +129,27 @@ class FileSystemScannerTest {
}
}
@Test
fun `given directory structure with hidden files when scanning then hidden files 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", ".comic2.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 file with mixed-case extension when scanning then files are returned`() {
Jimfs.newFileSystem(Configuration.unix()).use { fs ->