Skip to content

Commit daafc78

Browse files
authored
Merge pull request #35 from RandomCodeSpace/coverage/boost-80pct-r2
2 parents b294c16 + eefd8ae commit daafc78

40 files changed

Lines changed: 9595 additions & 0 deletions

.github/workflows/sonarcloud-java.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,5 @@ jobs:
2828
-Dsonar.projectKey=RandomCodeSpace_code-iq
2929
-Dsonar.organization=randomcodespace
3030
-Dsonar.host.url=https://sonarcloud.io
31+
"-Dsonar.exclusions=**/grammar/**,target/generated-sources/**"
32+
"-Dsonar.coverage.exclusions=**/grammar/**,target/generated-sources/**"

src/test/java/io/github/randomcodespace/iq/analyzer/FileDiscoveryTest.java

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)