@@ -61,6 +61,95 @@ func TestGitIgnore(t *testing.T) {
6161
6262}
6363
64+ func TestHiddenFilesAndDirectories (t * testing.T ) {
65+ space , err := NewDiskSpacePrimitives (t .TempDir (), "" )
66+ assert .NoError (t , err , "Failed to create DiskSpacePrimitives" )
67+
68+ // Create various files and directories
69+ _ , err = space .WriteFile ("visible.txt" , []byte ("visible" ), nil )
70+ assert .NoError (t , err )
71+
72+ _ , err = space .WriteFile (".hidden.txt" , []byte ("hidden" ), nil )
73+ assert .NoError (t , err )
74+
75+ _ , err = space .WriteFile ("dir/.hidden.txt" , []byte ("hidden in dir" ), nil )
76+ assert .NoError (t , err )
77+
78+ _ , err = space .WriteFile ("dir/visible.txt" , []byte ("visible in dir" ), nil )
79+ assert .NoError (t , err )
80+
81+ _ , err = space .WriteFile (".hidden/visible.txt" , []byte ("visible in hidden dir" ), nil )
82+ assert .NoError (t , err )
83+
84+ // Test deeply nested hidden directory
85+ _ , err = space .WriteFile (".hidden/.nested/deep.txt" , []byte ("deep nested hidden" ), nil )
86+ assert .NoError (t , err )
87+
88+ _ , err = space .WriteFile ("visible/.hidden/nested.txt" , []byte ("hidden in visible dir" ), nil )
89+ assert .NoError (t , err )
90+
91+ fileList , err := space .FetchFileList ()
92+ assert .NoError (t , err )
93+
94+ // Should only contain visible files (not hidden files or files in hidden directories)
95+ assert .Len (t , fileList , 2 )
96+
97+ fileNames := make ([]string , len (fileList ))
98+ for i , file := range fileList {
99+ fileNames [i ] = file .Name
100+ }
101+
102+ assert .Contains (t , fileNames , "visible.txt" )
103+ assert .Contains (t , fileNames , "dir/visible.txt" )
104+ assert .NotContains (t , fileNames , ".hidden.txt" )
105+ assert .NotContains (t , fileNames , "dir/.hidden.txt" )
106+ assert .NotContains (t , fileNames , ".hidden/visible.txt" )
107+ assert .NotContains (t , fileNames , ".hidden/.nested/deep.txt" )
108+ assert .NotContains (t , fileNames , "visible/.hidden/nested.txt" )
109+ }
110+
111+ func TestFileExtensionRequirement (t * testing.T ) {
112+ space , err := NewDiskSpacePrimitives (t .TempDir (), "" )
113+ assert .NoError (t , err , "Failed to create DiskSpacePrimitives" )
114+
115+ // Create files with and without extensions
116+ _ , err = space .WriteFile ("file.txt" , []byte ("with extension" ), nil )
117+ assert .NoError (t , err )
118+
119+ _ , err = space .WriteFile ("file.md" , []byte ("with extension" ), nil )
120+ assert .NoError (t , err )
121+
122+ _ , err = space .WriteFile ("noextension" , []byte ("without extension" ), nil )
123+ assert .NoError (t , err )
124+
125+ _ , err = space .WriteFile ("README" , []byte ("without extension" ), nil )
126+ assert .NoError (t , err )
127+
128+ _ , err = space .WriteFile ("dir/file.json" , []byte ("with extension in dir" ), nil )
129+ assert .NoError (t , err )
130+
131+ _ , err = space .WriteFile ("dir/noext" , []byte ("without extension in dir" ), nil )
132+ assert .NoError (t , err )
133+
134+ fileList , err := space .FetchFileList ()
135+ assert .NoError (t , err )
136+
137+ // Should only contain files with extensions
138+ assert .Len (t , fileList , 3 )
139+
140+ fileNames := make ([]string , len (fileList ))
141+ for i , file := range fileList {
142+ fileNames [i ] = file .Name
143+ }
144+
145+ assert .Contains (t , fileNames , "file.txt" )
146+ assert .Contains (t , fileNames , "file.md" )
147+ assert .Contains (t , fileNames , "dir/file.json" )
148+ assert .NotContains (t , fileNames , "noextension" )
149+ assert .NotContains (t , fileNames , "README" )
150+ assert .NotContains (t , fileNames , "dir/noext" )
151+ }
152+
64153// Test directory cleanup - specific to disk implementation
65154func TestCleanOrphaned (t * testing.T ) {
66155 tmpDir := t .TempDir ()
0 commit comments