diff options
| author | Tommaso Sciortino <[email protected]> | 2025-06-12 13:27:40 -0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-06-12 13:27:40 -0700 |
| commit | f8863f4d00f23a3e29496535be6cf0bb80ee43e9 (patch) | |
| tree | 46ad4c87fd48e0cdeca5bc7f3d435de25888bde2 /packages/core/src/tools/glob.test.ts | |
| parent | 32da693b911d0022d2b0f0d6a918e5830f425d54 (diff) | |
Make glob tool support abortSignal (#988)
Diffstat (limited to 'packages/core/src/tools/glob.test.ts')
| -rw-r--r-- | packages/core/src/tools/glob.test.ts | 47 |
1 files changed, 22 insertions, 25 deletions
diff --git a/packages/core/src/tools/glob.test.ts b/packages/core/src/tools/glob.test.ts index 90fe1a2e..37738ba7 100644 --- a/packages/core/src/tools/glob.test.ts +++ b/packages/core/src/tools/glob.test.ts @@ -4,17 +4,10 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { - GlobTool, - GlobToolParams, - sortFileEntries, - GlobFileEntry, -} from './glob.js'; +import { GlobTool, GlobToolParams, GlobPath, sortFileEntries } from './glob.js'; import { partListUnionToString } from '../core/geminiRequest.js'; -// import { ToolResult } from './tools.js'; // ToolResult is implicitly used by execute import path from 'path'; import fs from 'fs/promises'; -import { Stats } from 'fs'; import os from 'os'; import { describe, it, expect, beforeEach, afterEach } from 'vitest'; // Removed vi import { FileDiscoveryService } from '../services/fileDiscoveryService.js'; @@ -274,9 +267,9 @@ describe('sortFileEntries', () => { const nowTimestamp = new Date('2024-01-15T12:00:00.000Z').getTime(); const oneDayInMs = 24 * 60 * 60 * 1000; - const createFileEntry = (path: string, mtimeDate: Date): GlobFileEntry => ({ - path, - stats: { mtime: mtimeDate } as Stats, + const createFileEntry = (fullpath: string, mtimeDate: Date): GlobPath => ({ + fullpath: () => fullpath, + mtimeMs: mtimeDate.getTime(), }); it('should sort a mix of recent and older files correctly', () => { @@ -289,7 +282,7 @@ describe('sortFileEntries', () => { nowTimestamp - (oneDayInMs + 2 * 60 * 60 * 1000), ); // 26 hours ago - const entries: GlobFileEntry[] = [ + const entries: GlobPath[] = [ createFileEntry('older_zebra.txt', olderTime2), createFileEntry('recent_alpha.txt', recentTime1), createFileEntry('older_apple.txt', olderTime1), @@ -298,7 +291,7 @@ describe('sortFileEntries', () => { ]; const sorted = sortFileEntries(entries, nowTimestamp, oneDayInMs); - const sortedPaths = sorted.map((e) => e.path); + const sortedPaths = sorted.map((e) => e.fullpath()); expect(sortedPaths).toEqual([ 'recent_alpha.txt', // Recent, newest @@ -314,24 +307,28 @@ describe('sortFileEntries', () => { const recentTime2 = new Date(nowTimestamp - 2000); const recentTime3 = new Date(nowTimestamp - 3000); // Oldest recent - const entries: GlobFileEntry[] = [ + const entries: GlobPath[] = [ createFileEntry('c.txt', recentTime2), createFileEntry('a.txt', recentTime3), createFileEntry('b.txt', recentTime1), ]; const sorted = sortFileEntries(entries, nowTimestamp, oneDayInMs); - expect(sorted.map((e) => e.path)).toEqual(['b.txt', 'c.txt', 'a.txt']); + expect(sorted.map((e) => e.fullpath())).toEqual([ + 'b.txt', + 'c.txt', + 'a.txt', + ]); }); it('should sort only older files alphabetically by path', () => { const olderTime = new Date(nowTimestamp - 2 * oneDayInMs); // All equally old - const entries: GlobFileEntry[] = [ + const entries: GlobPath[] = [ createFileEntry('zebra.txt', olderTime), createFileEntry('apple.txt', olderTime), createFileEntry('banana.txt', olderTime), ]; const sorted = sortFileEntries(entries, nowTimestamp, oneDayInMs); - expect(sorted.map((e) => e.path)).toEqual([ + expect(sorted.map((e) => e.fullpath())).toEqual([ 'apple.txt', 'banana.txt', 'zebra.txt', @@ -339,30 +336,30 @@ describe('sortFileEntries', () => { }); it('should handle an empty array', () => { - const entries: GlobFileEntry[] = []; + const entries: GlobPath[] = []; const sorted = sortFileEntries(entries, nowTimestamp, oneDayInMs); expect(sorted).toEqual([]); }); it('should correctly sort files when mtimes are identical for older files', () => { const olderTime = new Date(nowTimestamp - 2 * oneDayInMs); - const entries: GlobFileEntry[] = [ + const entries: GlobPath[] = [ createFileEntry('b.txt', olderTime), createFileEntry('a.txt', olderTime), ]; const sorted = sortFileEntries(entries, nowTimestamp, oneDayInMs); - expect(sorted.map((e) => e.path)).toEqual(['a.txt', 'b.txt']); + expect(sorted.map((e) => e.fullpath())).toEqual(['a.txt', 'b.txt']); }); it('should correctly sort files when mtimes are identical for recent files (maintaining mtime sort)', () => { const recentTime = new Date(nowTimestamp - 1000); - const entries: GlobFileEntry[] = [ + const entries: GlobPath[] = [ createFileEntry('b.txt', recentTime), createFileEntry('a.txt', recentTime), ]; const sorted = sortFileEntries(entries, nowTimestamp, oneDayInMs); - expect(sorted.map((e) => e.path)).toContain('a.txt'); - expect(sorted.map((e) => e.path)).toContain('b.txt'); + expect(sorted.map((e) => e.fullpath())).toContain('a.txt'); + expect(sorted.map((e) => e.fullpath())).toContain('b.txt'); expect(sorted.length).toBe(2); }); @@ -371,12 +368,12 @@ describe('sortFileEntries', () => { const justUnderThreshold = new Date(nowTimestamp - (1000 - 1)); // Barely recent const customThresholdMs = 1000; // 1 second - const entries: GlobFileEntry[] = [ + const entries: GlobPath[] = [ createFileEntry('older_file.txt', justOverThreshold), createFileEntry('recent_file.txt', justUnderThreshold), ]; const sorted = sortFileEntries(entries, nowTimestamp, customThresholdMs); - expect(sorted.map((e) => e.path)).toEqual([ + expect(sorted.map((e) => e.fullpath())).toEqual([ 'recent_file.txt', 'older_file.txt', ]); |
