@@ -142,4 +142,103 @@ void discoversMakefile() throws IOException {
142142 assertEquals (1 , files .size ());
143143 assertEquals ("makefile" , files .getFirst ().language ());
144144 }
145+
146+ @ Test
147+ void excludesLockFiles () throws IOException {
148+ Files .writeString (tempDir .resolve ("package-lock.json" ), "{}" );
149+ Files .writeString (tempDir .resolve ("yarn.lock" ), "# yarn lockfile" );
150+ Files .writeString (tempDir .resolve ("pnpm-lock.yaml" ), "lockfileVersion: 5.4" );
151+ Files .writeString (tempDir .resolve ("go.sum" ), "github.com/foo v1.0.0 h1:abc" );
152+ Files .writeString (tempDir .resolve ("Cargo.lock" ), "[package]" );
153+ Files .writeString (tempDir .resolve ("app.java" ), "class App {}" );
154+
155+ List <DiscoveredFile > files = discovery .discover (tempDir );
156+
157+ assertEquals (1 , files .size ());
158+ assertEquals ("java" , files .getFirst ().language ());
159+ }
160+
161+ @ Test
162+ void excludesVcsDirs () throws IOException {
163+ Path gitDir = tempDir .resolve (".git/objects" );
164+ Files .createDirectories (gitDir );
165+ Files .writeString (gitDir .resolve ("packed-refs.java" ), "class Foo {}" );
166+ Files .writeString (tempDir .resolve ("main.java" ), "class Main {}" );
167+
168+ List <DiscoveredFile > files = discovery .discover (tempDir );
169+
170+ assertEquals (1 , files .size ());
171+ assertEquals ("main.java" , files .getFirst ().path ().toString ());
172+ }
173+
174+ @ Test
175+ void excludesPythonCacheDir () throws IOException {
176+ Path cacheDir = tempDir .resolve ("__pycache__" );
177+ Files .createDirectories (cacheDir );
178+ Files .writeString (cacheDir .resolve ("module.py" ), "x = 1" );
179+ Files .writeString (tempDir .resolve ("app.py" ), "print('hi')" );
180+
181+ List <DiscoveredFile > files = discovery .discover (tempDir );
182+
183+ assertEquals (1 , files .size ());
184+ assertEquals ("python" , files .getFirst ().language ());
185+ }
186+
187+ @ Test
188+ void skipsOversizedSourceFiles () throws IOException {
189+ // Create a file larger than 512KB
190+ byte [] bigContent = new byte [600_000 ];
191+ java .util .Arrays .fill (bigContent , (byte ) 'x' );
192+ Files .write (tempDir .resolve ("BigFile.java" ), bigContent );
193+ Files .writeString (tempDir .resolve ("Small.java" ), "class Small {}" );
194+
195+ List <DiscoveredFile > files = discovery .discover (tempDir );
196+
197+ assertEquals (1 , files .size ());
198+ assertEquals ("Small.java" , files .getFirst ().path ().toString ());
199+ }
200+
201+ @ Test
202+ void skipsOversizedConfigFiles () throws IOException {
203+ // Config files (yaml) capped at 64KB
204+ byte [] bigYaml = new byte [70_000 ];
205+ java .util .Arrays .fill (bigYaml , (byte ) 'x' );
206+ Files .write (tempDir .resolve ("big.yaml" ), bigYaml );
207+ Files .writeString (tempDir .resolve ("small.yaml" ), "key: value" );
208+
209+ List <DiscoveredFile > files = discovery .discover (tempDir );
210+
211+ assertEquals (1 , files .size ());
212+ assertEquals ("small.yaml" , files .getFirst ().path ().toString ());
213+ }
214+
215+ @ Test
216+ void excludesCodeIqOwnDirs () throws IOException {
217+ Path codeIntelDir = tempDir .resolve (".code-intelligence" );
218+ Path osscodeiqDir = tempDir .resolve (".osscodeiq" );
219+ Files .createDirectories (codeIntelDir );
220+ Files .createDirectories (osscodeiqDir );
221+ Files .writeString (codeIntelDir .resolve ("cache.java" ), "class Cache {}" );
222+ Files .writeString (osscodeiqDir .resolve ("meta.java" ), "class Meta {}" );
223+ Files .writeString (tempDir .resolve ("src.java" ), "class Src {}" );
224+
225+ List <DiscoveredFile > files = discovery .discover (tempDir );
226+
227+ assertEquals (1 , files .size ());
228+ assertEquals ("src.java" , files .getFirst ().path ().toString ());
229+ }
230+
231+ @ Test
232+ void pathComponentExclusionWorksForNestedDirs () throws IOException {
233+ // A file in path containing "vendor" segment
234+ Path vendorDir = tempDir .resolve ("pkg/vendor/dep" );
235+ Files .createDirectories (vendorDir );
236+ Files .writeString (vendorDir .resolve ("lib.go" ), "package main" );
237+ Files .writeString (tempDir .resolve ("main.go" ), "package main" );
238+
239+ List <DiscoveredFile > files = discovery .discover (tempDir );
240+
241+ assertEquals (1 , files .size ());
242+ assertEquals ("main.go" , files .getFirst ().path ().toString ());
243+ }
145244}
0 commit comments