diff --git a/server/utils/fileUtils.js b/server/utils/fileUtils.js
index 2c935557..f80c4acd 100644
--- a/server/utils/fileUtils.js
+++ b/server/utils/fileUtils.js
@@ -242,7 +242,7 @@ module.exports.recurseFiles = async (path, relPathToReplace = null) => {
})
.filter((item) => {
// Filter out items in ignore directories
- if (directoriesToIgnore.some((dir) => item.fullname.startsWith(dir))) {
+ if (directoriesToIgnore.some((dir) => item.fullname.startsWith(dir + '/'))) {
Logger.debug(`[fileUtils] Ignoring path in dir with .ignore "${item.fullname}"`)
return false
}
diff --git a/test/server/utils/fileUtils.test.js b/test/server/utils/fileUtils.test.js
index 59907be9..b57a6fb8 100644
--- a/test/server/utils/fileUtils.test.js
+++ b/test/server/utils/fileUtils.test.js
@@ -47,7 +47,7 @@ describe('fileUtils', () => {
// Mock file structure with normalized paths
const mockDirContents = new Map([
- ['/test', ['file1.mp3', 'subfolder', 'ignoreme', 'temp.mp3.tmp']],
+ ['/test', ['file1.mp3', 'subfolder', 'ignoreme', 'ignoremenot.mp3', 'temp.mp3.tmp']],
['/test/subfolder', ['file2.m4b']],
['/test/ignoreme', ['.ignore', 'ignored.mp3']]
])
@@ -59,7 +59,8 @@ describe('fileUtils', () => {
['/test/ignoreme', { isDirectory: () => true, size: 0, mtimeMs: Date.now(), ino: '4' }],
['/test/ignoreme/.ignore', { isDirectory: () => false, size: 0, mtimeMs: Date.now(), ino: '5' }],
['/test/ignoreme/ignored.mp3', { isDirectory: () => false, size: 1024, mtimeMs: Date.now(), ino: '6' }],
- ['/test/temp.mp3.tmp', { isDirectory: () => false, size: 1024, mtimeMs: Date.now(), ino: '7' }]
+ ['/test/ignoremenot.mp3', { isDirectory: () => false, size: 1024, mtimeMs: Date.now(), ino: '7' }],
+ ['/test/temp.mp3.tmp', { isDirectory: () => false, size: 1024, mtimeMs: Date.now(), ino: '8' }]
])
// Stub fs.readdir
@@ -103,7 +104,7 @@ describe('fileUtils', () => {
it('should return filtered file list', async () => {
const files = await fileUtils.recurseFiles('/test')
expect(files).to.be.an('array')
- expect(files).to.have.lengthOf(2)
+ expect(files).to.have.lengthOf(3)
expect(files[0]).to.deep.equal({
name: 'file1.mp3',
@@ -115,6 +116,15 @@ describe('fileUtils', () => {
})
expect(files[1]).to.deep.equal({
+ name: 'ignoremenot.mp3',
+ path: 'ignoremenot.mp3',
+ reldirpath: '',
+ fullpath: '/test/ignoremenot.mp3',
+ extension: '.mp3',
+ deep: 0
+ })
+
+ expect(files[2]).to.deep.equal({
name: 'file2.m4b',
path: 'subfolder/file2.m4b',
reldirpath: 'subfolder',