@kevinrabun/judges 3.54.0 → 3.55.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +56 -0
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/build-optimize.d.ts +7 -0
  6. package/dist/commands/build-optimize.d.ts.map +1 -0
  7. package/dist/commands/build-optimize.js +257 -0
  8. package/dist/commands/build-optimize.js.map +1 -0
  9. package/dist/commands/commit-hygiene.d.ts +6 -0
  10. package/dist/commands/commit-hygiene.d.ts.map +1 -0
  11. package/dist/commands/commit-hygiene.js +176 -0
  12. package/dist/commands/commit-hygiene.js.map +1 -0
  13. package/dist/commands/deploy-readiness.d.ts +6 -0
  14. package/dist/commands/deploy-readiness.d.ts.map +1 -0
  15. package/dist/commands/deploy-readiness.js +212 -0
  16. package/dist/commands/deploy-readiness.js.map +1 -0
  17. package/dist/commands/migration-safety.d.ts +6 -0
  18. package/dist/commands/migration-safety.d.ts.map +1 -0
  19. package/dist/commands/migration-safety.js +257 -0
  20. package/dist/commands/migration-safety.js.map +1 -0
  21. package/dist/commands/observability-gap.d.ts +6 -0
  22. package/dist/commands/observability-gap.d.ts.map +1 -0
  23. package/dist/commands/observability-gap.js +212 -0
  24. package/dist/commands/observability-gap.js.map +1 -0
  25. package/dist/commands/rollback-safety.d.ts +5 -0
  26. package/dist/commands/rollback-safety.d.ts.map +1 -0
  27. package/dist/commands/rollback-safety.js +192 -0
  28. package/dist/commands/rollback-safety.js.map +1 -0
  29. package/dist/commands/secret-age.d.ts +6 -0
  30. package/dist/commands/secret-age.d.ts.map +1 -0
  31. package/dist/commands/secret-age.js +215 -0
  32. package/dist/commands/secret-age.js.map +1 -0
  33. package/dist/commands/test-quality.d.ts +6 -0
  34. package/dist/commands/test-quality.d.ts.map +1 -0
  35. package/dist/commands/test-quality.js +161 -0
  36. package/dist/commands/test-quality.js.map +1 -0
  37. package/package.json +1 -1
  38. package/server.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secret-age.js","sourceRoot":"","sources":["../../src/commands/secret-age.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Test quality — score test suites for assertion density, boundary coverage,
3
+ * flakiness patterns, and mutation-testing readiness.
4
+ */
5
+ export declare function runTestQuality(argv: string[]): void;
6
+ //# sourceMappingURL=test-quality.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-quality.d.ts","sourceRoot":"","sources":["../../src/commands/test-quality.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAuHH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAwEnD"}
@@ -0,0 +1,161 @@
1
+ /**
2
+ * Test quality — score test suites for assertion density, boundary coverage,
3
+ * flakiness patterns, and mutation-testing readiness.
4
+ */
5
+ import { readFileSync, readdirSync, statSync } from "fs";
6
+ import { join, extname, basename } from "path";
7
+ // ─── File Collection ────────────────────────────────────────────────────────
8
+ const TEST_EXTS = new Set([".ts", ".tsx", ".js", ".jsx", ".py", ".java", ".go", ".rs"]);
9
+ const TEST_PATTERNS = [/\.test\./i, /\.spec\./i, /test_/i, /_test\./i];
10
+ function isTestFile(name) {
11
+ return TEST_PATTERNS.some((p) => p.test(name));
12
+ }
13
+ function collectTestFiles(dir, max = 300) {
14
+ const files = [];
15
+ function walk(d) {
16
+ if (files.length >= max)
17
+ return;
18
+ let entries;
19
+ try {
20
+ entries = readdirSync(d);
21
+ }
22
+ catch {
23
+ return;
24
+ }
25
+ for (const e of entries) {
26
+ if (files.length >= max)
27
+ return;
28
+ if (e.startsWith(".") || e === "node_modules" || e === "dist" || e === "build")
29
+ continue;
30
+ const full = join(d, e);
31
+ try {
32
+ if (statSync(full).isDirectory())
33
+ walk(full);
34
+ else if (TEST_EXTS.has(extname(full)) && isTestFile(basename(full)))
35
+ files.push(full);
36
+ }
37
+ catch {
38
+ /* skip */
39
+ }
40
+ }
41
+ }
42
+ walk(dir);
43
+ return files;
44
+ }
45
+ // ─── Analysis ───────────────────────────────────────────────────────────────
46
+ function analyzeTestFile(filepath) {
47
+ const issues = [];
48
+ let content;
49
+ try {
50
+ content = readFileSync(filepath, "utf-8");
51
+ }
52
+ catch {
53
+ return { file: filepath, tests: 0, assertions: 0, assertionDensity: 0, issues: ["Could not read file"] };
54
+ }
55
+ // Count tests
56
+ const testMatches = content.match(/(?:it|test|specify)\s*\(|def\s+test_|@Test|func\s+Test/g) || [];
57
+ const tests = testMatches.length;
58
+ // Count assertions
59
+ const assertionPatterns = /assert|expect|should|toBe|toEqual|toMatch|toThrow|toContain|toHaveLength|toHaveBeenCalled|assertEqual|assertIn|assertRaises|assert_eq!|require\./g;
60
+ const assertions = (content.match(assertionPatterns) || []).length;
61
+ const assertionDensity = tests > 0 ? assertions / tests : 0;
62
+ // Zero-assertion tests
63
+ if (tests > 0 && assertions === 0) {
64
+ issues.push("No assertions found — tests that never assert prove nothing");
65
+ }
66
+ else if (assertionDensity < 1 && tests > 0) {
67
+ issues.push(`Low assertion density (${assertionDensity.toFixed(1)}/test) — some tests may lack assertions`);
68
+ }
69
+ // setTimeout / sleep (flakiness)
70
+ if (/setTimeout|sleep|time\.sleep|Thread\.sleep|time\.After/i.test(content)) {
71
+ issues.push("Timer-based waits detected — flakiness risk");
72
+ }
73
+ // Snapshot auto-update
74
+ if (/toMatchSnapshot|toMatchInlineSnapshot/i.test(content)) {
75
+ issues.push("Snapshot tests found — check for auto-update masking regressions");
76
+ }
77
+ // Mock overuse
78
+ const mockCount = (content.match(/mock|jest\.fn|sinon\.stub|patch\(|@Mock|gomock/gi) || []).length;
79
+ if (mockCount > 10) {
80
+ issues.push(`Heavy mocking (${mockCount} mocks) — test may not reflect real behavior`);
81
+ }
82
+ // Missing edge cases
83
+ const hasNullCheck = /null|undefined|nil|None|empty|boundary|edge/i.test(content);
84
+ const hasErrorCheck = /error|exception|throw|reject|fail|panic/i.test(content);
85
+ if (!hasNullCheck && !hasErrorCheck && tests > 0) {
86
+ issues.push("No null/error/boundary test cases — missing edge coverage");
87
+ }
88
+ // Hardcoded values only
89
+ const hasParameterized = /\.each|@parameterized|@pytest\.mark\.parametrize|testCases|table.?driven/i.test(content);
90
+ if (tests >= 5 && !hasParameterized) {
91
+ issues.push("No parameterized tests — consider table-driven testing for broader coverage");
92
+ }
93
+ // Commented-out tests
94
+ const commentedTests = (content.match(/\/\/\s*(it|test|describe)\s*\(|#\s*def\s+test_/g) || []).length;
95
+ if (commentedTests > 0) {
96
+ issues.push(`${commentedTests} commented-out test(s) — remove or restore`);
97
+ }
98
+ return { file: filepath, tests, assertions, assertionDensity, issues };
99
+ }
100
+ // ─── CLI ────────────────────────────────────────────────────────────────────
101
+ export function runTestQuality(argv) {
102
+ if (argv.includes("--help") || argv.includes("-h")) {
103
+ console.log(`
104
+ judges test-quality — Score test suites beyond coverage percentage
105
+
106
+ Usage:
107
+ judges test-quality [dir]
108
+ judges test-quality tests/ --format json
109
+
110
+ Options:
111
+ [dir] Directory to scan (default: .)
112
+ --format json JSON output
113
+ --help, -h Show this help
114
+
115
+ Checks: assertion density, zero-assertion tests, timer-based waits, snapshot abuse,
116
+ mock overuse, missing edge cases, parameterized tests, commented-out tests.
117
+ `);
118
+ return;
119
+ }
120
+ const format = argv.find((_a, i) => argv[i - 1] === "--format") || "text";
121
+ const dir = argv.find((a) => !a.startsWith("-") && argv.indexOf(a) > 0) || ".";
122
+ const files = collectTestFiles(dir);
123
+ const reports = files.map(analyzeTestFile);
124
+ const totalTests = reports.reduce((s, r) => s + r.tests, 0);
125
+ const totalAssertions = reports.reduce((s, r) => s + r.assertions, 0);
126
+ const totalIssues = reports.reduce((s, r) => s + r.issues.length, 0);
127
+ const avgDensity = totalTests > 0 ? totalAssertions / totalTests : 0;
128
+ const score = Math.max(0, Math.min(100, Math.round(100 - totalIssues * 5)));
129
+ if (format === "json") {
130
+ console.log(JSON.stringify({
131
+ reports,
132
+ score,
133
+ summary: {
134
+ files: files.length,
135
+ tests: totalTests,
136
+ assertions: totalAssertions,
137
+ avgDensity: +avgDensity.toFixed(2),
138
+ issues: totalIssues,
139
+ },
140
+ timestamp: new Date().toISOString(),
141
+ }, null, 2));
142
+ }
143
+ else {
144
+ const badge = score >= 80 ? "✅ GOOD" : score >= 50 ? "⚠️ FAIR" : "❌ POOR";
145
+ console.log(`\n Test Quality: ${badge} (${score}/100)\n ──────────────────────────`);
146
+ console.log(` Files: ${files.length} | Tests: ${totalTests} | Assertions: ${totalAssertions} | Avg density: ${avgDensity.toFixed(1)}/test\n`);
147
+ const problematic = reports.filter((r) => r.issues.length > 0);
148
+ if (problematic.length === 0) {
149
+ console.log(" No quality issues detected.\n");
150
+ return;
151
+ }
152
+ for (const r of problematic) {
153
+ console.log(` 📄 ${r.file} (${r.tests} tests, ${r.assertions} assertions)`);
154
+ for (const issue of r.issues) {
155
+ console.log(` ⚠️ ${issue}`);
156
+ }
157
+ }
158
+ console.log(`\n Total issues: ${totalIssues} | Score: ${score}/100\n`);
159
+ }
160
+ }
161
+ //# sourceMappingURL=test-quality.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-quality.js","sourceRoot":"","sources":["../../src/commands/test-quality.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kevinrabun/judges",
3
- "version": "3.54.0",
3
+ "version": "3.55.0",
4
4
  "description": "45 specialized judges that evaluate AI-generated code for security, cost, and quality.",
5
5
  "mcpName": "io.github.KevinRabun/judges",
6
6
  "type": "module",
package/server.json CHANGED
@@ -7,12 +7,12 @@
7
7
  "url": "https://github.com/kevinrabun/judges",
8
8
  "source": "github"
9
9
  },
10
- "version": "3.54.0",
10
+ "version": "3.55.0",
11
11
  "packages": [
12
12
  {
13
13
  "registryType": "npm",
14
14
  "identifier": "@kevinrabun/judges",
15
- "version": "3.54.0",
15
+ "version": "3.55.0",
16
16
  "transport": {
17
17
  "type": "stdio"
18
18
  }