@@ -91,25 +91,30 @@ describe("readTree", () => {
9191 expect ( result . children [ 3 ] . name ) . toBe ( "b-file.txt" ) ;
9292 } ) ;
9393
94- it ( "should skip hidden files" , async ( ) => {
94+ it ( "should show hidden files except .git " , async ( ) => {
9595 await writeFile ( join ( testDir , ".hidden" ) , "hidden" ) ;
96+ await writeFile ( join ( testDir , ".gitignore" ) , "*.log\n" ) ;
97+ await mkdirAsync ( join ( testDir , ".git" ) ) ;
9698 await writeFile ( join ( testDir , "visible.txt" ) , "visible" ) ;
9799
98100 const result = await readTree ( testDir ) ;
99101
100- expect ( result . children ) . toHaveLength ( 1 ) ;
101- expect ( result . children [ 0 ] . name ) . toBe ( "visible.txt" ) ;
102+ expect ( result . children . some ( ( n ) => n . name === ".hidden" ) ) . toBe ( true ) ;
103+ expect ( result . children . some ( ( n ) => n . name === ".gitignore" ) ) . toBe ( true ) ;
104+ expect ( result . children . some ( ( n ) => n . name === ".git" ) ) . toBe ( false ) ;
105+ expect ( result . children . some ( ( n ) => n . name === "visible.txt" ) ) . toBe ( true ) ;
102106 } ) ;
103107
104- it ( "should skip node_modules and .git" , async ( ) => {
108+ it ( "should show node_modules but skip .git" , async ( ) => {
105109 await mkdirAsync ( join ( testDir , "node_modules" ) ) ;
106110 await mkdirAsync ( join ( testDir , ".git" ) ) ;
107111 await writeFile ( join ( testDir , "file.txt" ) , "content" ) ;
108112
109113 const result = await readTree ( testDir ) ;
110114
111- expect ( result . children ) . toHaveLength ( 1 ) ;
112- expect ( result . children [ 0 ] . name ) . toBe ( "file.txt" ) ;
115+ expect ( result . children . some ( ( n ) => n . name === "node_modules" ) ) . toBe ( true ) ;
116+ expect ( result . children . some ( ( n ) => n . name === ".git" ) ) . toBe ( false ) ;
117+ expect ( result . children . some ( ( n ) => n . name === "file.txt" ) ) . toBe ( true ) ;
113118 } ) ;
114119
115120 it ( "should use relative paths" , async ( ) => {
@@ -122,7 +127,7 @@ describe("readTree", () => {
122127 // Subdir children are undefined (lazy loading)
123128 } ) ;
124129
125- it ( "should respect .gitignore rules " , async ( ) => {
130+ it ( "should not hide .gitignore-matched files from the tree " , async ( ) => {
126131 await writeFile ( join ( testDir , ".gitignore" ) , "*.log\ndist/" ) ;
127132 await writeFile ( join ( testDir , "app.log" ) , "log content" ) ;
128133 await writeFile ( join ( testDir , "app.txt" ) , "text content" ) ;
@@ -131,23 +136,9 @@ describe("readTree", () => {
131136
132137 const result = await readTree ( testDir ) ;
133138
134- expect ( result . children . some ( ( n ) => n . name === "app.log" ) ) . toBe ( false ) ;
135- expect ( result . children . some ( ( n ) => n . name === "dist" ) ) . toBe ( false ) ;
139+ expect ( result . children . some ( ( n ) => n . name === "app.log" ) ) . toBe ( true ) ;
140+ expect ( result . children . some ( ( n ) => n . name === "dist" ) ) . toBe ( true ) ;
136141 expect ( result . children . some ( ( n ) => n . name === "app.txt" ) ) . toBe ( true ) ;
137142 expect ( result . children . some ( ( n ) => n . name === "src" ) ) . toBe ( true ) ;
138143 } ) ;
139-
140- it ( "should show dotfiles when .gitignore does not ignore them" , async ( ) => {
141- await writeFile ( join ( testDir , ".gitignore" ) , "*.log" ) ;
142- await writeFile ( join ( testDir , ".env" ) , "secret" ) ;
143- await writeFile ( join ( testDir , ".hidden-config" ) , "hidden" ) ;
144- await writeFile ( join ( testDir , "visible.txt" ) , "visible" ) ;
145-
146- const result = await readTree ( testDir ) ;
147-
148- expect ( result . children . some ( ( n ) => n . name === ".env" ) ) . toBe ( true ) ;
149- expect ( result . children . some ( ( n ) => n . name === ".gitignore" ) ) . toBe ( true ) ;
150- expect ( result . children . some ( ( n ) => n . name === ".hidden-config" ) ) . toBe ( true ) ;
151- expect ( result . children . some ( ( n ) => n . name === "visible.txt" ) ) . toBe ( true ) ;
152- } ) ;
153144} ) ;
0 commit comments