Skip to content

Commit ec60938

Browse files
ricardo-leivaclaude
authored andcommitted
test(fs): tighten cap assertion and add nested-path case per Greptile review
- Use toBe(50_000) for flat input — zero derived directories means total === cap - Add test documenting that entries total can exceed 50k when nested paths produce extra directory entries via deriveDirectories (cap is on raw files, not on the final files+dirs result) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TpGjPYBD4pgZpsAHjozzsN
1 parent d0e8db5 commit ec60938

1 file changed

Lines changed: 21 additions & 1 deletion

File tree

packages/workspace-server/src/services/fs/service.test.ts

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,14 +58,34 @@ describe("FsService.listRepoFiles", () => {
5858

5959
it("caps file list at MAX_REPO_FILES when repo is very large", async () => {
6060
vi.mocked(getChangedFiles).mockResolvedValue(new Set());
61+
// Flat paths produce zero derived directory entries, so total === cap.
6162
const bigList = Array.from({ length: 60_000 }, (_, i) => `file${i}.ts`);
6263
vi.mocked(listFiles).mockResolvedValue(bigList);
6364
vi.mocked(listUntrackedFiles).mockResolvedValue([]);
6465

6566
const service = new FsService();
6667
const entries = await service.listRepoFiles("/repo");
6768

68-
expect(entries.length).toBeLessThanOrEqual(50_000);
69+
expect(entries.length).toBe(50_000);
70+
});
71+
72+
it("total entries can exceed MAX_REPO_FILES when derived directories are included", async () => {
73+
vi.mocked(getChangedFiles).mockResolvedValue(new Set());
74+
// Nested paths cause deriveDirectories to add parent directory entries on
75+
// top of the capped 50k file entries, so the returned total is > 50k.
76+
const bigList = Array.from(
77+
{ length: 60_000 },
78+
(_, i) => `src/sub${i}/file.ts`,
79+
);
80+
vi.mocked(listFiles).mockResolvedValue(bigList);
81+
vi.mocked(listUntrackedFiles).mockResolvedValue([]);
82+
83+
const service = new FsService();
84+
const entries = await service.listRepoFiles("/repo");
85+
86+
const fileEntries = entries.filter((e) => e.kind === "file");
87+
expect(fileEntries.length).toBe(50_000);
88+
expect(entries.length).toBeGreaterThan(50_000);
6989
});
7090

7191
it("omits untracked files when git ls-files --others is aborted", async () => {

0 commit comments

Comments
 (0)