diff --git a/packages/core/src/utils/pathReader.test.ts b/packages/core/src/utils/pathReader.test.ts index 97717d0a3..6cfba645c 100644 --- a/packages/core/src/utils/pathReader.test.ts +++ b/packages/core/src/utils/pathReader.test.ts @@ -20,6 +20,10 @@ const createMockConfig = ( cwd: string, otherDirs: string[] = [], mockFileService?: FileDiscoveryService, + fileFilteringOptions?: { + respectGitIgnore: boolean; + respectQwenIgnore: boolean; + }, ): Config => { const workspace = new WorkspaceContext(cwd, otherDirs); const fileSystemService = new StandardFileSystemService(); @@ -29,6 +33,11 @@ const createMockConfig = ( getTargetDir: () => cwd, getFileSystemService: () => fileSystemService, getFileService: () => mockFileService, + getFileFilteringOptions: () => + fileFilteringOptions ?? { + respectGitIgnore: true, + respectQwenIgnore: true, + }, getTruncateToolOutputThreshold: () => 2500, getTruncateToolOutputLines: () => 500, getContentGeneratorConfig: () => ({ @@ -340,6 +349,29 @@ describe('readPathFromWorkspace', () => { expect(resultText).not.toContain('invisible'); expect(mockFileService.filterFiles).toHaveBeenCalled(); }); + + it('should pass respectGitIgnore: false from config to filterFiles', async () => { + mock({ + [CWD]: { + 'ignored.txt': 'ignored content', + }, + }); + const mockFileService = { + filterFiles: vi.fn((files) => files), + } as unknown as FileDiscoveryService; + const config = createMockConfig(CWD, [], mockFileService, { + respectGitIgnore: false, + respectQwenIgnore: true, + }); + await readPathFromWorkspace('ignored.txt', config); + expect(mockFileService.filterFiles).toHaveBeenCalledWith( + ['ignored.txt'], + { + respectGitIgnore: false, + respectQwenIgnore: true, + }, + ); + }); }); it('should throw an error for an absolute path outside the workspace', async () => { diff --git a/packages/core/src/utils/pathReader.ts b/packages/core/src/utils/pathReader.ts index 37cbb6299..ca1321216 100644 --- a/packages/core/src/utils/pathReader.ts +++ b/packages/core/src/utils/pathReader.ts @@ -72,9 +72,10 @@ export async function readPathFromWorkspace( const relativeFiles = files.map((p) => path.relative(config.getTargetDir(), p), ); + const filteringOptions = config.getFileFilteringOptions(); const filteredFiles = fileService.filterFiles(relativeFiles, { - respectGitIgnore: true, - respectQwenIgnore: true, + respectGitIgnore: filteringOptions.respectGitIgnore, + respectQwenIgnore: filteringOptions.respectQwenIgnore, }); const finalFiles = filteredFiles.map((p) => path.resolve(config.getTargetDir(), p), @@ -93,9 +94,10 @@ export async function readPathFromWorkspace( } else { // It's a single file, check if it's ignored. const relativePath = path.relative(config.getTargetDir(), absolutePath); + const singleFileFilteringOptions = config.getFileFilteringOptions(); const filtered = fileService.filterFiles([relativePath], { - respectGitIgnore: true, - respectQwenIgnore: true, + respectGitIgnore: singleFileFilteringOptions.respectGitIgnore, + respectQwenIgnore: singleFileFilteringOptions.respectQwenIgnore, }); if (filtered.length === 0) {