Bug/1369 at command recursive search (#1370)

This commit is contained in:
Billy Biggs 2025-06-23 23:48:26 -07:00 committed by GitHub
parent a2ed4266aa
commit b47a4240ff
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 36 additions and 4 deletions

View File

@ -21,6 +21,7 @@ const mockConfig = {
isSandboxed: vi.fn(() => false),
getFileService: vi.fn(),
getFileFilteringRespectGitIgnore: vi.fn(() => true),
getEnableRecursiveFileSearch: vi.fn(() => true),
} as unknown as Config;
const mockReadManyFilesExecute = vi.fn();
@ -720,4 +721,35 @@ describe('handleAtCommand', () => {
expect(result.shouldProceed).toBe(true);
});
});
describe('when recursive file search is disabled', () => {
beforeEach(() => {
vi.mocked(mockConfig.getEnableRecursiveFileSearch).mockReturnValue(false);
});
it('should not use glob search for a nonexistent file', async () => {
const invalidFile = 'nonexistent.txt';
const query = `@${invalidFile}`;
vi.mocked(fsPromises.stat).mockRejectedValue(
Object.assign(new Error('ENOENT'), { code: 'ENOENT' }),
);
const result = await handleAtCommand({
query,
config: mockConfig,
addItem: mockAddItem,
onDebugMessage: mockOnDebugMessage,
messageId: 300,
signal: abortController.signal,
});
expect(mockGlobExecute).not.toHaveBeenCalled();
expect(mockOnDebugMessage).toHaveBeenCalledWith(
`Glob tool not found. Path ${invalidFile} will be skipped.`,
);
expect(result.processedQuery).toEqual([{ text: query }]);
expect(result.shouldProceed).toBe(true);
});
});
});

View File

@ -210,10 +210,10 @@ export async function handleAtCommand({
resolvedSuccessfully = true;
} catch (error) {
if (isNodeError(error) && error.code === 'ENOENT') {
onDebugMessage(
`Path ${pathName} not found directly, attempting glob search.`,
);
if (globTool) {
if (config.getEnableRecursiveFileSearch() && globTool) {
onDebugMessage(
`Path ${pathName} not found directly, attempting glob search.`,
);
try {
const globResult = await globTool.execute(
{ pattern: `**/*${pathName}*`, path: config.getTargetDir() },