@@ -35,16 +35,16 @@ describe("file_list tool", () => {
3535 ) ) as Extract < FileListToolResult , { success : true } > ;
3636
3737 expect ( result . success ) . toBe ( true ) ;
38- expect ( result . entries . length ) . toBe ( 3 ) ;
3938 expect ( result . total_count ) . toBe ( 3 ) ;
4039 expect ( result . depth_used ) . toBe ( 1 ) ;
4140
42- // Check sorting: directories first
43- expect ( result . entries [ 0 ] . name ) . toBe ( "subdir" ) ;
44- expect ( result . entries [ 0 ] . type ) . toBe ( "directory" ) ;
45- expect ( result . entries [ 1 ] . name ) . toBe ( "file1.txt" ) ;
46- expect ( result . entries [ 1 ] . type ) . toBe ( "file" ) ;
47- expect ( result . entries [ 2 ] . name ) . toBe ( "file2.txt" ) ;
41+ // Check output contains expected entries
42+ expect ( result . output ) . toContain ( "subdir/" ) ;
43+ expect ( result . output ) . toContain ( "file1.txt" ) ;
44+ expect ( result . output ) . toContain ( "file2.txt" ) ;
45+
46+ // Check sorting: directories first (subdir appears before files in output)
47+ expect ( result . output . indexOf ( "subdir/" ) ) . toBeLessThan ( result . output . indexOf ( "file1.txt" ) ) ;
4848 } ) ;
4949
5050 test ( "lists files recursively (depth 2)" , async ( ) => {
@@ -65,11 +65,13 @@ describe("file_list tool", () => {
6565 expect ( result . total_count ) . toBe ( 3 ) ; // dir1, dir1/file1.txt, root.txt
6666 expect ( result . depth_used ) . toBe ( 2 ) ;
6767
68- const dir1 = result . entries . find ( ( e ) => e . name === "dir1" ) ;
69- expect ( dir1 ) . toBeDefined ( ) ;
70- expect ( dir1 ! . children ) . toBeDefined ( ) ;
71- expect ( dir1 ! . children ! . length ) . toBe ( 1 ) ;
72- expect ( dir1 ! . children ! [ 0 ] . name ) . toBe ( "file1.txt" ) ;
68+ // Check output shows nested structure
69+ expect ( result . output ) . toContain ( "dir1/" ) ;
70+ expect ( result . output ) . toContain ( "file1.txt" ) ;
71+ expect ( result . output ) . toContain ( "root.txt" ) ;
72+
73+ // Check indentation shows nesting (file1.txt should be indented under dir1)
74+ expect ( result . output ) . toMatch ( / d i r 1 \/ \s * \n .* f i l e 1 \. t x t / ) ;
7375 } ) ;
7476
7577 test ( "shows file sizes" , async ( ) => {
@@ -84,7 +86,8 @@ describe("file_list tool", () => {
8486 ) ) as Extract < FileListToolResult , { success : true } > ;
8587
8688 expect ( result . success ) . toBe ( true ) ;
87- expect ( result . entries [ 0 ] . size ) . toBe ( 100 ) ;
89+ // Check output includes file size
90+ expect ( result . output ) . toMatch ( / f i l e \. t x t .* \( 1 0 0 B \) / ) ;
8891 } ) ;
8992
9093 test ( "empty directory" , async ( ) => {
@@ -96,8 +99,8 @@ describe("file_list tool", () => {
9699 ) ) as Extract < FileListToolResult , { success : true } > ;
97100
98101 expect ( result . success ) . toBe ( true ) ;
99- expect ( result . entries . length ) . toBe ( 0 ) ;
100102 expect ( result . total_count ) . toBe ( 0 ) ;
103+ expect ( result . output ) . toBe ( "(empty directory)" ) ;
101104 } ) ;
102105 } ) ;
103106
@@ -116,8 +119,10 @@ describe("file_list tool", () => {
116119 ) ) as Extract < FileListToolResult , { success : true } > ;
117120
118121 expect ( result . success ) . toBe ( true ) ;
119- expect ( result . entries . length ) . toBe ( 2 ) ;
120- expect ( result . entries . every ( ( e ) => e . name . endsWith ( ".ts" ) ) ) . toBe ( true ) ;
122+ expect ( result . total_count ) . toBe ( 2 ) ;
123+ expect ( result . output ) . toContain ( "file1.ts" ) ;
124+ expect ( result . output ) . toContain ( "file3.ts" ) ;
125+ expect ( result . output ) . not . toContain ( "file2.js" ) ;
121126 } ) ;
122127
123128 test ( "prunes empty directories when using pattern" , async ( ) => {
@@ -138,8 +143,10 @@ describe("file_list tool", () => {
138143
139144 expect ( result . success ) . toBe ( true ) ;
140145 // Should only include hasTs directory (not noTs)
141- expect ( result . entries . length ) . toBe ( 1 ) ;
142- expect ( result . entries [ 0 ] . name ) . toBe ( "hasTs" ) ;
146+ expect ( result . total_count ) . toBe ( 2 ) ; // hasTs dir + file.ts inside
147+ expect ( result . output ) . toContain ( "hasTs/" ) ;
148+ expect ( result . output ) . toContain ( "file.ts" ) ;
149+ expect ( result . output ) . not . toContain ( "noTs" ) ;
143150 } ) ;
144151 } ) ;
145152
@@ -163,10 +170,10 @@ describe("file_list tool", () => {
163170
164171 expect ( result . success ) . toBe ( true ) ;
165172 // Should include .gitignore and included.txt, but not ignored.txt or node_modules
166- expect ( result . entries . some ( ( e ) => e . name === ".gitignore" ) ) . toBe ( true ) ;
167- expect ( result . entries . some ( ( e ) => e . name === "included.txt" ) ) . toBe ( true ) ;
168- expect ( result . entries . some ( ( e ) => e . name === "ignored.txt" ) ) . toBe ( false ) ;
169- expect ( result . entries . some ( ( e ) => e . name === "node_modules" ) ) . toBe ( false ) ;
173+ expect ( result . output ) . toContain ( ".gitignore" ) ;
174+ expect ( result . output ) . toContain ( "included.txt" ) ;
175+ expect ( result . output ) . not . toContain ( "ignored.txt" ) ;
176+ expect ( result . output ) . not . toContain ( "node_modules" ) ;
170177 } ) ;
171178
172179 test ( "shows all files when gitignore=false" , async ( ) => {
@@ -183,7 +190,7 @@ describe("file_list tool", () => {
183190 ) ) as Extract < FileListToolResult , { success : true } > ;
184191
185192 expect ( result . success ) . toBe ( true ) ;
186- expect ( result . entries . some ( ( e ) => e . name === "ignored.txt" ) ) . toBe ( true ) ;
193+ expect ( result . output ) . toContain ( "ignored.txt" ) ;
187194 } ) ;
188195
189196 test ( "always hides .git directory" , async ( ) => {
@@ -200,7 +207,7 @@ describe("file_list tool", () => {
200207 ) ) as Extract < FileListToolResult , { success : true } > ;
201208
202209 expect ( result . success ) . toBe ( true ) ;
203- expect ( result . entries . some ( ( e ) => e . name === ".git" ) ) . toBe ( false ) ;
210+ expect ( result . output ) . not . toContain ( ".git" ) ;
204211 } ) ;
205212
206213 test ( "shows hidden files (dotfiles)" , async ( ) => {
@@ -216,8 +223,8 @@ describe("file_list tool", () => {
216223 ) ) as Extract < FileListToolResult , { success : true } > ;
217224
218225 expect ( result . success ) . toBe ( true ) ;
219- expect ( result . entries . some ( ( e ) => e . name === ".env" ) ) . toBe ( true ) ;
220- expect ( result . entries . some ( ( e ) => e . name === ".gitignore" ) ) . toBe ( true ) ;
226+ expect ( result . output ) . toContain ( ".env" ) ;
227+ expect ( result . output ) . toContain ( ".gitignore" ) ;
221228 } ) ;
222229 } ) ;
223230
@@ -352,9 +359,10 @@ describe("file_list tool", () => {
352359 ) ) as Extract < FileListToolResult , { success : true } > ;
353360
354361 expect ( result . success ) . toBe ( true ) ;
355- const dir = result . entries . find ( ( e ) => e . name === "dir1" ) ;
356- expect ( dir ) . toBeDefined ( ) ;
357- expect ( dir ! . children ) . toBeUndefined ( ) ; // No children at depth 1
362+ expect ( result . output ) . toContain ( "dir1/" ) ;
363+ expect ( result . output ) . toContain ( "root.txt" ) ;
364+ // At depth 1, nested.txt should NOT appear (not traversed)
365+ expect ( result . output ) . not . toContain ( "nested.txt" ) ;
358366 } ) ;
359367 } ) ;
360368} ) ;
0 commit comments