@gnapi/cotester 1.2.5 → 1.2.7
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.
- package/dist/analyzer.d.ts +4 -0
- package/dist/analyzer.js +4 -0
- package/dist/analyzer.js.map +1 -1
- package/dist/auditLogger.d.ts +46 -0
- package/dist/auditLogger.js +107 -0
- package/dist/auditLogger.js.map +1 -0
- package/dist/checker.d.ts +11 -0
- package/dist/checker.js +32 -0
- package/dist/checker.js.map +1 -1
- package/dist/cli.js +22 -3
- package/dist/cli.js.map +1 -1
- package/dist/configManager.d.ts +16 -0
- package/dist/configManager.js +84 -17
- package/dist/configManager.js.map +1 -1
- package/dist/fileWorker.js +6 -1
- package/dist/fileWorker.js.map +1 -1
- package/dist/frameworkAdapter.d.ts +8 -0
- package/dist/frameworkAdapter.js +13 -1
- package/dist/frameworkAdapter.js.map +1 -1
- package/dist/generator.d.ts +24 -1
- package/dist/generator.js +161 -36
- package/dist/generator.js.map +1 -1
- package/dist/importRepairer.d.ts +22 -0
- package/dist/importRepairer.js +226 -0
- package/dist/importRepairer.js.map +1 -0
- package/dist/interfaceShapeResolver.js +8 -3
- package/dist/interfaceShapeResolver.js.map +1 -1
- package/dist/migrator.d.ts +49 -0
- package/dist/migrator.js +335 -0
- package/dist/migrator.js.map +1 -0
- package/dist/mockDataEngine.js +128 -0
- package/dist/mockDataEngine.js.map +1 -1
- package/dist/mockGenerator.js +3 -1
- package/dist/mockGenerator.js.map +1 -1
- package/dist/reporter.d.ts +1 -1
- package/dist/reporter.js +84 -0
- package/dist/reporter.js.map +1 -1
- package/dist/scenarioEngine.d.ts +3 -0
- package/dist/scenarioEngine.js +70 -1
- package/dist/scenarioEngine.js.map +1 -1
- package/dist/sensitiveValueDetector.d.ts +62 -0
- package/dist/sensitiveValueDetector.js +147 -0
- package/dist/sensitiveValueDetector.js.map +1 -0
- package/dist/validator.d.ts +25 -0
- package/dist/validator.js +150 -0
- package/dist/validator.js.map +1 -0
- package/dist/watcher.js +10 -1
- package/dist/watcher.js.map +1 -1
- package/package.json +1 -1
package/dist/analyzer.d.ts
CHANGED
|
@@ -4,6 +4,8 @@ import { PathAliases } from "./pathAliasResolver";
|
|
|
4
4
|
export interface ParameterMeta {
|
|
5
5
|
name: string;
|
|
6
6
|
type: string;
|
|
7
|
+
/** true when the parameter is optional (declared with `?` or has a default value) */
|
|
8
|
+
isOptional?: boolean;
|
|
7
9
|
}
|
|
8
10
|
/** Per-function return type metadata for a single imported name */
|
|
9
11
|
export interface ImportedFunctionMeta {
|
|
@@ -33,6 +35,8 @@ export interface DependencyMeta {
|
|
|
33
35
|
export interface FunctionMeta {
|
|
34
36
|
name: string;
|
|
35
37
|
className?: string;
|
|
38
|
+
/** true when this is a static class method */
|
|
39
|
+
isStatic?: boolean;
|
|
36
40
|
parameters: ParameterMeta[];
|
|
37
41
|
returnType: string;
|
|
38
42
|
/** Function uses async/await or returns a Promise */
|
package/dist/analyzer.js
CHANGED
|
@@ -68,6 +68,7 @@ function analyzeFile(filePath, aliases) {
|
|
|
68
68
|
const parameters = fn.getParameters().map((p) => ({
|
|
69
69
|
name: p.getName(),
|
|
70
70
|
type: p.getType().getText(p) || "unknown",
|
|
71
|
+
isOptional: p.isOptional(),
|
|
71
72
|
}));
|
|
72
73
|
const returnType = fn.getReturnType().getText(fn) || "void";
|
|
73
74
|
const isAsync = fn.isAsync() || returnType.toLowerCase().startsWith("promise");
|
|
@@ -107,9 +108,11 @@ function analyzeFile(filePath, aliases) {
|
|
|
107
108
|
const parameters = method.getParameters().map((p) => ({
|
|
108
109
|
name: p.getName(),
|
|
109
110
|
type: p.getType().getText(p) || "unknown",
|
|
111
|
+
isOptional: p.isOptional(),
|
|
110
112
|
}));
|
|
111
113
|
const returnType = method.getReturnType().getText(method) || "void";
|
|
112
114
|
const isAsync = method.isAsync() || returnType.toLowerCase().startsWith("promise");
|
|
115
|
+
const isStatic = method.hasModifier(ts_morph_1.SyntaxKind.StaticKeyword);
|
|
113
116
|
const throwsErrors = bodyContainsThrow(method);
|
|
114
117
|
const dependencies = findUsedDependencies(method, fileImports, sourceFile);
|
|
115
118
|
const branches = (0, branchAnalyzer_1.analyzeBranches)(method);
|
|
@@ -117,6 +120,7 @@ function analyzeFile(filePath, aliases) {
|
|
|
117
120
|
results.push({
|
|
118
121
|
name,
|
|
119
122
|
className,
|
|
123
|
+
isStatic,
|
|
120
124
|
parameters,
|
|
121
125
|
returnType,
|
|
122
126
|
isAsync,
|
package/dist/analyzer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generation Audit Log (Feature 21)
|
|
3
|
+
*
|
|
4
|
+
* Appends a structured JSONL entry to `cotester/.audit.jsonl` every time
|
|
5
|
+
* cotester generates or updates a test file. Each line is a self-contained
|
|
6
|
+
* JSON object (JSON Lines format) for easy streaming/grep/compliance queries.
|
|
7
|
+
*
|
|
8
|
+
* Entry shape:
|
|
9
|
+
* {
|
|
10
|
+
* "timestamp": "2026-03-06T10:00:00.000Z", // ISO-8601 UTC
|
|
11
|
+
* "file": "src/services/user.service.ts", // relative to projectRoot
|
|
12
|
+
* "added": ["createUser", "deleteUser"], // new describe blocks written
|
|
13
|
+
* "merged": ["updateUser"], // sig-changed blocks (warning injected)
|
|
14
|
+
* "skipped": ["getUsers"] // already covered, untouched
|
|
15
|
+
* }
|
|
16
|
+
*/
|
|
17
|
+
export interface AuditEntry {
|
|
18
|
+
/** ISO-8601 UTC timestamp of the generation run */
|
|
19
|
+
timestamp: string;
|
|
20
|
+
/** Source file path relative to projectRoot, forward-slash separated */
|
|
21
|
+
file: string;
|
|
22
|
+
/** Function/method names for which a new describe block was written */
|
|
23
|
+
added: string[];
|
|
24
|
+
/** Function/method names whose signature changed (describe existed, warning injected) */
|
|
25
|
+
merged: string[];
|
|
26
|
+
/** Function/method names already covered and left untouched */
|
|
27
|
+
skipped: string[];
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Append one audit entry to `cotester/.audit.jsonl`.
|
|
31
|
+
*
|
|
32
|
+
* - In dry-run mode the entry is printed to stdout instead of written to disk.
|
|
33
|
+
* - Entries with all-empty lists (nothing added, merged, or skipped) are
|
|
34
|
+
* silently suppressed — they carry no useful information.
|
|
35
|
+
*/
|
|
36
|
+
export declare function writeAuditEntry(entry: AuditEntry, projectRoot: string, dryRun?: boolean): void;
|
|
37
|
+
/**
|
|
38
|
+
* Build an AuditEntry from the result of a test-file generation run.
|
|
39
|
+
*
|
|
40
|
+
* @param srcFilePath Absolute path to the source file.
|
|
41
|
+
* @param projectRoot Absolute path to the project root.
|
|
42
|
+
* @param added Function names for newly created describe blocks.
|
|
43
|
+
* @param merged Function names whose signature changed.
|
|
44
|
+
* @param skipped Function names already covered with no changes.
|
|
45
|
+
*/
|
|
46
|
+
export declare function buildAuditEntry(srcFilePath: string, projectRoot: string, added: string[], merged: string[], skipped: string[]): AuditEntry;
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Generation Audit Log (Feature 21)
|
|
4
|
+
*
|
|
5
|
+
* Appends a structured JSONL entry to `cotester/.audit.jsonl` every time
|
|
6
|
+
* cotester generates or updates a test file. Each line is a self-contained
|
|
7
|
+
* JSON object (JSON Lines format) for easy streaming/grep/compliance queries.
|
|
8
|
+
*
|
|
9
|
+
* Entry shape:
|
|
10
|
+
* {
|
|
11
|
+
* "timestamp": "2026-03-06T10:00:00.000Z", // ISO-8601 UTC
|
|
12
|
+
* "file": "src/services/user.service.ts", // relative to projectRoot
|
|
13
|
+
* "added": ["createUser", "deleteUser"], // new describe blocks written
|
|
14
|
+
* "merged": ["updateUser"], // sig-changed blocks (warning injected)
|
|
15
|
+
* "skipped": ["getUsers"] // already covered, untouched
|
|
16
|
+
* }
|
|
17
|
+
*/
|
|
18
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
19
|
+
if (k2 === undefined) k2 = k;
|
|
20
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
21
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
22
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
23
|
+
}
|
|
24
|
+
Object.defineProperty(o, k2, desc);
|
|
25
|
+
}) : (function(o, m, k, k2) {
|
|
26
|
+
if (k2 === undefined) k2 = k;
|
|
27
|
+
o[k2] = m[k];
|
|
28
|
+
}));
|
|
29
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
30
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
31
|
+
}) : function(o, v) {
|
|
32
|
+
o["default"] = v;
|
|
33
|
+
});
|
|
34
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
35
|
+
var ownKeys = function(o) {
|
|
36
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
37
|
+
var ar = [];
|
|
38
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
39
|
+
return ar;
|
|
40
|
+
};
|
|
41
|
+
return ownKeys(o);
|
|
42
|
+
};
|
|
43
|
+
return function (mod) {
|
|
44
|
+
if (mod && mod.__esModule) return mod;
|
|
45
|
+
var result = {};
|
|
46
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
47
|
+
__setModuleDefault(result, mod);
|
|
48
|
+
return result;
|
|
49
|
+
};
|
|
50
|
+
})();
|
|
51
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
52
|
+
exports.writeAuditEntry = writeAuditEntry;
|
|
53
|
+
exports.buildAuditEntry = buildAuditEntry;
|
|
54
|
+
const fs = __importStar(require("fs"));
|
|
55
|
+
const path = __importStar(require("path"));
|
|
56
|
+
const utils_1 = require("./utils");
|
|
57
|
+
// ─── Constants ────────────────────────────────────────────────────────────────
|
|
58
|
+
const AUDIT_FILE = path.join("cotester", ".audit.jsonl");
|
|
59
|
+
// ─── Public API ───────────────────────────────────────────────────────────────
|
|
60
|
+
/**
|
|
61
|
+
* Append one audit entry to `cotester/.audit.jsonl`.
|
|
62
|
+
*
|
|
63
|
+
* - In dry-run mode the entry is printed to stdout instead of written to disk.
|
|
64
|
+
* - Entries with all-empty lists (nothing added, merged, or skipped) are
|
|
65
|
+
* silently suppressed — they carry no useful information.
|
|
66
|
+
*/
|
|
67
|
+
function writeAuditEntry(entry, projectRoot, dryRun = false) {
|
|
68
|
+
// Suppress empty entries (e.g. file had no exported functions)
|
|
69
|
+
if (entry.added.length === 0 &&
|
|
70
|
+
entry.merged.length === 0 &&
|
|
71
|
+
entry.skipped.length === 0) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
const line = JSON.stringify(entry);
|
|
75
|
+
if (dryRun) {
|
|
76
|
+
(0, utils_1.log)(`[audit] ${line}`, "info");
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
const auditPath = path.join(projectRoot, AUDIT_FILE);
|
|
80
|
+
(0, utils_1.ensureDir)(path.dirname(auditPath));
|
|
81
|
+
try {
|
|
82
|
+
fs.appendFileSync(auditPath, line + "\n", "utf-8");
|
|
83
|
+
}
|
|
84
|
+
catch (err) {
|
|
85
|
+
// Non-fatal — never block generation due to audit write failure
|
|
86
|
+
(0, utils_1.log)(` Warning: could not write audit log: ${err.message}`, "warn");
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Build an AuditEntry from the result of a test-file generation run.
|
|
91
|
+
*
|
|
92
|
+
* @param srcFilePath Absolute path to the source file.
|
|
93
|
+
* @param projectRoot Absolute path to the project root.
|
|
94
|
+
* @param added Function names for newly created describe blocks.
|
|
95
|
+
* @param merged Function names whose signature changed.
|
|
96
|
+
* @param skipped Function names already covered with no changes.
|
|
97
|
+
*/
|
|
98
|
+
function buildAuditEntry(srcFilePath, projectRoot, added, merged, skipped) {
|
|
99
|
+
return {
|
|
100
|
+
timestamp: new Date().toISOString(),
|
|
101
|
+
file: path.relative(projectRoot, srcFilePath).replace(/\\/g, "/"),
|
|
102
|
+
added,
|
|
103
|
+
merged,
|
|
104
|
+
skipped,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=auditLogger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auditLogger.js","sourceRoot":"","sources":["../src/auditLogger.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCH,0CA8BC;AAWD,0CAcC;AAvFD,uCAAyB;AACzB,2CAA6B;AAC7B,mCAAyC;AAiBzC,iFAAiF;AAEjF,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;AAEzD,iFAAiF;AAEjF;;;;;;GAMG;AACH,SAAgB,eAAe,CAC3B,KAAiB,EACjB,WAAmB,EACnB,MAAM,GAAG,KAAK;IAEd,+DAA+D;IAC/D,IACI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QACxB,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAC5B,CAAC;QACC,OAAO;IACX,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAEnC,IAAI,MAAM,EAAE,CAAC;QACT,IAAA,WAAG,EAAC,WAAW,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;QAC/B,OAAO;IACX,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACrD,IAAA,iBAAS,EAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAEnC,IAAI,CAAC;QACD,EAAE,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAChB,gEAAgE;QAChE,IAAA,WAAG,EAAC,yCAAyC,GAAG,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;IACxE,CAAC;AACL,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,eAAe,CAC3B,WAAmB,EACnB,WAAmB,EACnB,KAAe,EACf,MAAgB,EAChB,OAAiB;IAEjB,OAAO;QACH,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;QACjE,KAAK;QACL,MAAM;QACN,OAAO;KACV,CAAC;AACN,CAAC"}
|
package/dist/checker.d.ts
CHANGED
|
@@ -21,6 +21,17 @@ export interface FileCoverage {
|
|
|
21
21
|
totalCount: number;
|
|
22
22
|
/** Number of functions whose @testgen-sig fingerprint no longer matches current source */
|
|
23
23
|
staleCount: number;
|
|
24
|
+
/** Total `expect(` calls found in the test file */
|
|
25
|
+
assertionCount: number;
|
|
26
|
+
/** Total `it(` / `test(` calls found in the test file */
|
|
27
|
+
testCaseCount: number;
|
|
28
|
+
/**
|
|
29
|
+
* Heuristic quality score (0–100):
|
|
30
|
+
* - 0 when no test file exists
|
|
31
|
+
* - Based on assertion density (assertions per test case) and test case count
|
|
32
|
+
* - A = 80+, B = 60–79, C = 40–59, D = <40
|
|
33
|
+
*/
|
|
34
|
+
qualityScore: number;
|
|
24
35
|
}
|
|
25
36
|
export interface CheckResult {
|
|
26
37
|
fileCoverages: FileCoverage[];
|
package/dist/checker.js
CHANGED
|
@@ -115,6 +115,9 @@ function computeCoverage(scanRoot, projectRoot, config) {
|
|
|
115
115
|
}));
|
|
116
116
|
const fileCoveredCount = functionCoverages.filter((f) => f.covered).length;
|
|
117
117
|
const fileStaleCount = detectStaleCount(testContent, rawFunctions);
|
|
118
|
+
const assertionCount = countOccurrences(testContent, "expect(");
|
|
119
|
+
const testCaseCount = countOccurrences(testContent, "it(") + countOccurrences(testContent, "test(");
|
|
120
|
+
const qualityScore = computeQualityScore(assertionCount, testCaseCount, testFileExists);
|
|
118
121
|
totalFunctions += functionCoverages.length;
|
|
119
122
|
coveredFunctions += fileCoveredCount;
|
|
120
123
|
totalStale += fileStaleCount;
|
|
@@ -127,6 +130,9 @@ function computeCoverage(scanRoot, projectRoot, config) {
|
|
|
127
130
|
coveredCount: fileCoveredCount,
|
|
128
131
|
totalCount: functionCoverages.length,
|
|
129
132
|
staleCount: fileStaleCount,
|
|
133
|
+
assertionCount,
|
|
134
|
+
testCaseCount,
|
|
135
|
+
qualityScore,
|
|
130
136
|
});
|
|
131
137
|
}
|
|
132
138
|
const coveragePercent = totalFunctions === 0 ? 100 : Math.round((coveredFunctions / totalFunctions) * 100);
|
|
@@ -337,6 +343,32 @@ function isCovered(fnName, testContent) {
|
|
|
337
343
|
const pattern = new RegExp(`describe\\s*\\(\\s*['"\`]${escaped}['"\`]`);
|
|
338
344
|
return pattern.test(testContent);
|
|
339
345
|
}
|
|
346
|
+
/** Count non-overlapping occurrences of `needle` in `haystack`. */
|
|
347
|
+
function countOccurrences(haystack, needle) {
|
|
348
|
+
if (!haystack || !needle)
|
|
349
|
+
return 0;
|
|
350
|
+
let count = 0;
|
|
351
|
+
let idx = 0;
|
|
352
|
+
while ((idx = haystack.indexOf(needle, idx)) !== -1) {
|
|
353
|
+
count++;
|
|
354
|
+
idx += needle.length;
|
|
355
|
+
}
|
|
356
|
+
return count;
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Heuristic quality score (0–100).
|
|
360
|
+
* - 0 when no test file exists
|
|
361
|
+
* - Rewards assertion density and number of test cases
|
|
362
|
+
* - A = 80+, B = 60–79, C = 40–59, D = <40
|
|
363
|
+
*/
|
|
364
|
+
function computeQualityScore(assertionCount, testCaseCount, testFileExists) {
|
|
365
|
+
if (!testFileExists || testCaseCount === 0)
|
|
366
|
+
return 0;
|
|
367
|
+
const density = assertionCount / testCaseCount; // avg assertions per test
|
|
368
|
+
const densityScore = Math.min(50, density * 25); // up to 50 pts for ≥2 asserts/test
|
|
369
|
+
const caseScore = Math.min(50, testCaseCount * 5); // up to 50 pts for ≥10 test cases
|
|
370
|
+
return Math.round(densityScore + caseScore);
|
|
371
|
+
}
|
|
340
372
|
/** Safely analyse a file, returning [] on any error. */
|
|
341
373
|
function safeAnalyze(filePath, projectRoot) {
|
|
342
374
|
try {
|
package/dist/checker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checker.js","sourceRoot":"","sources":["../src/checker.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"checker.js","sourceRoot":"","sources":["../src/checker.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -44,6 +44,8 @@ const utils_1 = require("./utils");
|
|
|
44
44
|
const checker_1 = require("./checker");
|
|
45
45
|
const reporter_1 = require("./reporter");
|
|
46
46
|
const hooksInstaller_1 = require("./hooksInstaller");
|
|
47
|
+
const migrator_1 = require("./migrator");
|
|
48
|
+
const validator_1 = require("./validator");
|
|
47
49
|
const program = new commander_1.Command();
|
|
48
50
|
program
|
|
49
51
|
.name("cotester")
|
|
@@ -120,13 +122,13 @@ program
|
|
|
120
122
|
.command("report [folder]")
|
|
121
123
|
.description("Generate a coverage report combining cotester function tracking with Istanbul/c8 metrics. " +
|
|
122
124
|
"Optionally restrict to a subfolder of src/.")
|
|
123
|
-
.option("--format <fmt>", "Output format: html, json, or
|
|
125
|
+
.option("--format <fmt>", "Output format: html, json, md, junit, or lcov (default: md)", "md")
|
|
124
126
|
.option("--coverage <path>", "Path to Istanbul/c8 coverage-summary.json (default: coverage/coverage-summary.json)")
|
|
125
127
|
.option("-o, --output <file>", "Write report to a file instead of stdout")
|
|
126
128
|
.action((folder, opts) => {
|
|
127
129
|
const fmt = (opts.format ?? "md");
|
|
128
|
-
if (!["html", "json", "md"].includes(fmt)) {
|
|
129
|
-
console.error(`Invalid --format "${fmt}". Must be html, json, or
|
|
130
|
+
if (!["html", "json", "md", "junit", "lcov"].includes(fmt)) {
|
|
131
|
+
console.error(`Invalid --format "${fmt}". Must be html, json, md, junit, or lcov.`);
|
|
130
132
|
process.exit(1);
|
|
131
133
|
}
|
|
132
134
|
(0, reporter_1.runReport)({
|
|
@@ -143,5 +145,22 @@ program
|
|
|
143
145
|
.action(() => {
|
|
144
146
|
(0, hooksInstaller_1.installHooks)();
|
|
145
147
|
});
|
|
148
|
+
program
|
|
149
|
+
.command("migrate [folder]")
|
|
150
|
+
.description("Scan all cotester-generated test/mock files and upgrade them to the current format version. " +
|
|
151
|
+
"Optionally restrict to a subfolder of testDir (e.g. `cotester migrate services`). " +
|
|
152
|
+
"Safe to run multiple times — already-current files are skipped.")
|
|
153
|
+
.option("--dry-run", "Show what would change without writing any files")
|
|
154
|
+
.action((folder, opts) => {
|
|
155
|
+
(0, migrator_1.runMigrate)(folder, { dryRun: opts.dryRun });
|
|
156
|
+
});
|
|
157
|
+
program
|
|
158
|
+
.command("validate [folder]")
|
|
159
|
+
.description("Compile-check all cotester-generated test files with tsc --noEmit. " +
|
|
160
|
+
"Exits with code 1 if any TypeScript errors are found. " +
|
|
161
|
+
"Optionally restrict to a subfolder of testDir (e.g. `cotester validate services`).")
|
|
162
|
+
.action((folder) => {
|
|
163
|
+
(0, validator_1.runValidate)({ folder });
|
|
164
|
+
});
|
|
146
165
|
program.parse(process.argv);
|
|
147
166
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,uCAAyB;AACzB,2CAA6B;AAC7B,yCAAoC;AACpC,2CAAwC;AACxC,uCAAsD;AACtD,mDAA6C;AAC7C,mCAA0D;AAC1D,uCAAgD;AAChD,yCAAuC;AACvC,qDAAgD;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/configManager.d.ts
CHANGED
|
@@ -33,5 +33,21 @@ export interface TestGenConfig {
|
|
|
33
33
|
snapshotForComplexTypes: boolean;
|
|
34
34
|
};
|
|
35
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Load the resolved configuration for a project, applying a four-level merge chain:
|
|
38
|
+
*
|
|
39
|
+
* DEFAULT_CONFIG
|
|
40
|
+
* ↓ (lowest priority)
|
|
41
|
+
* ancestor cotester.config.json files (monorepo parents, most-distant first)
|
|
42
|
+
* ↓
|
|
43
|
+
* npm `extends` chain from the local config (explicit shared base)
|
|
44
|
+
* ↓
|
|
45
|
+
* local cotester/cotester.config.json (highest priority — child overrides win)
|
|
46
|
+
*
|
|
47
|
+
* The ancestor walk starts at the *parent* of `projectRoot` and climbs up to the
|
|
48
|
+
* filesystem root (capped at 8 levels). Only directories that actually contain a
|
|
49
|
+
* `cotester/cotester.config.json` file contribute to the merge; gaps in the tree
|
|
50
|
+
* are skipped silently.
|
|
51
|
+
*/
|
|
36
52
|
export declare function loadConfig(projectRoot: string): TestGenConfig;
|
|
37
53
|
export declare function getDefaultConfig(): TestGenConfig;
|
package/dist/configManager.js
CHANGED
|
@@ -65,21 +65,52 @@ const DEFAULT_CONFIG = {
|
|
|
65
65
|
snapshotForComplexTypes: false,
|
|
66
66
|
},
|
|
67
67
|
};
|
|
68
|
+
/**
|
|
69
|
+
* Load the resolved configuration for a project, applying a four-level merge chain:
|
|
70
|
+
*
|
|
71
|
+
* DEFAULT_CONFIG
|
|
72
|
+
* ↓ (lowest priority)
|
|
73
|
+
* ancestor cotester.config.json files (monorepo parents, most-distant first)
|
|
74
|
+
* ↓
|
|
75
|
+
* npm `extends` chain from the local config (explicit shared base)
|
|
76
|
+
* ↓
|
|
77
|
+
* local cotester/cotester.config.json (highest priority — child overrides win)
|
|
78
|
+
*
|
|
79
|
+
* The ancestor walk starts at the *parent* of `projectRoot` and climbs up to the
|
|
80
|
+
* filesystem root (capped at 8 levels). Only directories that actually contain a
|
|
81
|
+
* `cotester/cotester.config.json` file contribute to the merge; gaps in the tree
|
|
82
|
+
* are skipped silently.
|
|
83
|
+
*/
|
|
68
84
|
function loadConfig(projectRoot) {
|
|
69
|
-
const
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
85
|
+
const localConfigPath = path.join(projectRoot, "cotester", "cotester.config.json");
|
|
86
|
+
// Step 1 — collect ancestor configs (most-distant → nearest, stops before projectRoot)
|
|
87
|
+
const ancestors = collectAncestorConfigs(projectRoot);
|
|
88
|
+
// Step 2 — start from defaults, fold in each ancestor left-to-right
|
|
89
|
+
let inherited = { ...DEFAULT_CONFIG };
|
|
90
|
+
for (const ancestor of ancestors) {
|
|
91
|
+
inherited = mergeConfig(inherited, ancestor);
|
|
92
|
+
}
|
|
93
|
+
// Step 3 — apply local config on top of the inherited base
|
|
94
|
+
if (!fs.existsSync(localConfigPath)) {
|
|
95
|
+
if (ancestors.length > 0) {
|
|
96
|
+
// Inherited config from monorepo ancestors, no local override
|
|
80
97
|
}
|
|
98
|
+
return inherited;
|
|
99
|
+
}
|
|
100
|
+
try {
|
|
101
|
+
const raw = fs.readFileSync(localConfigPath, "utf-8");
|
|
102
|
+
const userConfig = JSON.parse(raw);
|
|
103
|
+
// Resolve `extends` using the already-inherited config as the base so the
|
|
104
|
+
// npm package chain builds ON TOP of monorepo defaults, not from scratch.
|
|
105
|
+
const withExtends = userConfig.extends
|
|
106
|
+
? resolveExtends(userConfig, projectRoot, new Set(), inherited)
|
|
107
|
+
: inherited;
|
|
108
|
+
return mergeConfig(withExtends, userConfig);
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
console.warn("⚠ Could not parse cotester.config.json — using inherited/defaults.");
|
|
112
|
+
return inherited;
|
|
81
113
|
}
|
|
82
|
-
return { ...DEFAULT_CONFIG };
|
|
83
114
|
}
|
|
84
115
|
/**
|
|
85
116
|
* Resolve an `extends` chain, returning the merged config of all ancestors.
|
|
@@ -94,13 +125,13 @@ function loadConfig(projectRoot) {
|
|
|
94
125
|
*
|
|
95
126
|
* Supports up to 5 levels of chaining to guard against cycles / runaway depth.
|
|
96
127
|
*/
|
|
97
|
-
function resolveExtends(userConfig, projectRoot, visited, depth = 0) {
|
|
128
|
+
function resolveExtends(userConfig, projectRoot, visited, base = DEFAULT_CONFIG, depth = 0) {
|
|
98
129
|
const extendsTarget = userConfig.extends;
|
|
99
130
|
if (!extendsTarget || depth >= 5)
|
|
100
|
-
return { ...
|
|
131
|
+
return { ...base };
|
|
101
132
|
if (visited.has(extendsTarget)) {
|
|
102
133
|
console.warn(`⚠ CoTester config: circular extends detected for "${extendsTarget}" — skipping.`);
|
|
103
|
-
return { ...
|
|
134
|
+
return { ...base };
|
|
104
135
|
}
|
|
105
136
|
visited.add(extendsTarget);
|
|
106
137
|
try {
|
|
@@ -122,13 +153,49 @@ function resolveExtends(userConfig, projectRoot, visited, depth = 0) {
|
|
|
122
153
|
return { ...DEFAULT_CONFIG };
|
|
123
154
|
}
|
|
124
155
|
// Recurse into the base config's own extends chain first
|
|
125
|
-
const grandBase = resolveExtends(baseRaw, projectRoot, visited, depth + 1);
|
|
156
|
+
const grandBase = resolveExtends(baseRaw, projectRoot, visited, base, depth + 1);
|
|
126
157
|
return mergeConfig(grandBase, baseRaw);
|
|
127
158
|
}
|
|
128
159
|
catch (err) {
|
|
129
160
|
console.warn(`⚠ CoTester config: could not resolve extends "${extendsTarget}": ${err?.message}`);
|
|
130
|
-
return { ...
|
|
161
|
+
return { ...base };
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Walk up the directory tree from `projectRoot`'s **parent** and collect any
|
|
166
|
+
* `cotester/cotester.config.json` files found along the way.
|
|
167
|
+
*
|
|
168
|
+
* Returns configs ordered most-distant-ancestor first so callers can fold them
|
|
169
|
+
* left-to-right (nearer parent wins over more-distant grandparent).
|
|
170
|
+
*
|
|
171
|
+
* Rules:
|
|
172
|
+
* - Starts at `path.dirname(projectRoot)` — the local config is NOT included.
|
|
173
|
+
* - Stops when the filesystem root is reached or after 8 levels.
|
|
174
|
+
* - The `extends` field inside ancestor configs is intentionally ignored; only
|
|
175
|
+
* their direct fields contribute to the merge (keeps the algorithm simple and
|
|
176
|
+
* avoids cross-tree dependency loops).
|
|
177
|
+
*/
|
|
178
|
+
function collectAncestorConfigs(projectRoot) {
|
|
179
|
+
const found = [];
|
|
180
|
+
let current = path.dirname(projectRoot);
|
|
181
|
+
for (let i = 0; i < 8; i++) {
|
|
182
|
+
const parent = path.dirname(current);
|
|
183
|
+
if (parent === current)
|
|
184
|
+
break; // reached filesystem root
|
|
185
|
+
const configPath = path.join(current, "cotester", "cotester.config.json");
|
|
186
|
+
if (fs.existsSync(configPath)) {
|
|
187
|
+
try {
|
|
188
|
+
const raw = JSON.parse(fs.readFileSync(configPath, "utf-8"));
|
|
189
|
+
// Prepend so the most-distant ancestor ends up first after all iterations
|
|
190
|
+
found.unshift(raw);
|
|
191
|
+
}
|
|
192
|
+
catch {
|
|
193
|
+
// Skip unparseable ancestor configs silently
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
current = parent;
|
|
131
197
|
}
|
|
198
|
+
return found;
|
|
132
199
|
}
|
|
133
200
|
function mergeConfig(base, override) {
|
|
134
201
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configManager.js","sourceRoot":"","sources":["../src/configManager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"configManager.js","sourceRoot":"","sources":["../src/configManager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmGA,gCAmCC;AAsHD,4CAEC;AA9PD,uCAAyB;AACzB,2CAA6B;AAC7B,mCAAuC;AAqDvC,MAAM,cAAc,GAAkB;IAClC,aAAa,EAAE,CAAC,aAAa,CAAC;IAC9B,cAAc,EAAE,CAAC,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,CAAC;IACpF,OAAO,EAAE,gBAAgB;IACzB,OAAO,EAAE,gBAAgB;IACzB,MAAM,EAAE,KAAK;IACb,WAAW,EAAE,EAAE;IACf,SAAS,EAAE,MAAM;IACjB,aAAa,EAAE;QACX,MAAM,EAAE;YACJ,uBAAuB;YACvB,wBAAwB;YACxB,cAAc;YACd,wBAAwB;SAC3B;QACD,MAAM,EAAE;YACJ,qBAAqB;YACrB,sBAAsB;YACtB,4BAA4B;YAC5B,+BAA+B;SAClC;QACD,OAAO,EAAE,CAAC,0BAA0B,EAAE,yBAAyB,CAAC;QAChE,OAAO,EAAE,CAAC,sBAAsB,CAAC;QACjC,cAAc,EAAE,CAAC;QACjB,uBAAuB,EAAE,KAAK;KACjC;CACJ,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,UAAU,CAAC,WAAmB;IAC1C,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,sBAAsB,CAAC,CAAC;IAEnF,uFAAuF;IACvF,MAAM,SAAS,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAC;IAEtD,oEAAoE;IACpE,IAAI,SAAS,GAAkB,EAAE,GAAG,cAAc,EAAE,CAAC;IACrD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QAC/B,SAAS,GAAG,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACjD,CAAC;IAED,2DAA2D;IAC3D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QAClC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,8DAA8D;QAClE,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QACtD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAkB,CAAC;QAEpD,0EAA0E;QAC1E,0EAA0E;QAC1E,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO;YAClC,CAAC,CAAC,cAAc,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,GAAG,EAAE,EAAE,SAAS,CAAC;YAC/D,CAAC,CAAC,SAAS,CAAC;QAEhB,OAAO,WAAW,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC;QACpF,OAAO,SAAS,CAAC;IACrB,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,cAAc,CACnB,UAAyB,EACzB,WAAmB,EACnB,OAAoB,EACpB,OAAsB,cAAc,EACpC,KAAK,GAAG,CAAC;IAET,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC;IACzC,IAAI,CAAC,aAAa,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC;IACrD,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,sDAAsD,aAAa,eAAe,CAAC,CAAC;QACjG,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC;IACvB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAE3B,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,IAAA,sBAAa,EAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC;QAClE,IAAI,OAAsB,CAAC;QAE3B,2EAA2E;QAC3E,IAAI,CAAC;YACD,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,aAAa,uBAAuB,CAAC,CAAC;YAC5E,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAkB,CAAC;QACpF,CAAC;QAAC,MAAM,CAAC;YACL,qEAAqE;YACrE,8DAA8D;YAC9D,MAAM,GAAG,GAAG,GAAG,CAAC,aAAa,CAAC,CAAC;YAC/B,OAAO,GAAG,CAAC,GAAG,EAAE,OAAO,IAAI,GAAG,CAAkB,CAAC;QACrD,CAAC;QAED,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC1C,OAAO,CAAC,IAAI,CAAC,gCAAgC,aAAa,yCAAyC,CAAC,CAAC;YACrG,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;QACjC,CAAC;QAED,yDAAyD;QACzD,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QACjF,OAAO,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,kDAAkD,aAAa,MAAM,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;QAClG,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC;IACvB,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAS,sBAAsB,CAAC,WAAmB;IAC/C,MAAM,KAAK,GAAoB,EAAE,CAAC;IAClC,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAExC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,MAAM,KAAK,OAAO;YAAE,MAAM,CAAC,0BAA0B;QAEzD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,sBAAsB,CAAC,CAAC;QAC1E,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAkB,CAAC;gBAC9E,0EAA0E;gBAC1E,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACvB,CAAC;YAAC,MAAM,CAAC;gBACL,6CAA6C;YACjD,CAAC;QACL,CAAC;QAED,OAAO,GAAG,MAAM,CAAC;IACrB,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,WAAW,CAChB,IAAmB,EACnB,QAAgC;IAEhC,OAAO;QACH,aAAa,EAAE,QAAQ,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa;QAC3D,cAAc,EAAE,QAAQ,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc;QAC9D,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO;QACzC,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO;QACzC,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM;QACtC,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW;QACrD,SAAS,EAAE,QAAQ,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS;QAC/C,aAAa,EAAE;YACX,GAAG,IAAI,CAAC,aAAa;YACrB,GAAG,CAAC,QAAQ,CAAC,aAAa,IAAI,EAAE,CAAC;SACpC;KACJ,CAAC;AACN,CAAC;AAED,SAAgB,gBAAgB;IAC5B,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;AACjC,CAAC"}
|