supercov 0.0.3 → 0.0.5
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/README.md +132 -76
- package/dist/analyze.d.ts.map +1 -1
- package/dist/analyze.js +1 -0
- package/dist/analyze.js.map +1 -1
- package/dist/buildCache.d.ts +14 -0
- package/dist/buildCache.d.ts.map +1 -0
- package/dist/buildCache.js +84 -0
- package/dist/buildCache.js.map +1 -0
- package/dist/cli.js +213 -26
- package/dist/cli.js.map +1 -1
- package/dist/directInstrumenter.d.ts +2 -2
- package/dist/directInstrumenter.d.ts.map +1 -1
- package/dist/directInstrumenter.js +18 -20
- package/dist/directInstrumenter.js.map +1 -1
- package/dist/esmInterceptor.d.ts +6 -0
- package/dist/esmInterceptor.d.ts.map +1 -0
- package/dist/esmInterceptor.js +63 -0
- package/dist/esmInterceptor.js.map +1 -0
- package/dist/evidenceArchive.d.ts +37 -0
- package/dist/evidenceArchive.d.ts.map +1 -0
- package/dist/evidenceArchive.js +110 -0
- package/dist/evidenceArchive.js.map +1 -0
- package/dist/instrumenter.d.ts.map +1 -1
- package/dist/instrumenter.js +10 -6
- package/dist/instrumenter.js.map +1 -1
- package/dist/integrity.d.ts.map +1 -1
- package/dist/integrity.js +3 -3
- package/dist/integrity.js.map +1 -1
- package/dist/launchSupervisor.d.ts +6 -0
- package/dist/launchSupervisor.d.ts.map +1 -1
- package/dist/launchSupervisor.js +78 -4
- package/dist/launchSupervisor.js.map +1 -1
- package/dist/merge.d.ts +2 -0
- package/dist/merge.d.ts.map +1 -0
- package/dist/merge.js +116 -0
- package/dist/merge.js.map +1 -0
- package/dist/nodeTest.d.ts +15 -0
- package/dist/nodeTest.d.ts.map +1 -0
- package/dist/nodeTest.js +121 -0
- package/dist/nodeTest.js.map +1 -0
- package/dist/project.d.ts +6 -1
- package/dist/project.d.ts.map +1 -1
- package/dist/project.js +26 -8
- package/dist/project.js.map +1 -1
- package/dist/query.d.ts +25 -0
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +280 -21
- package/dist/query.js.map +1 -1
- package/dist/register.mjs +40 -0
- package/dist/register.mjs.map +1 -1
- package/dist/reporter.d.ts +6 -13
- package/dist/reporter.d.ts.map +1 -1
- package/dist/reporter.js +21 -82
- package/dist/reporter.js.map +1 -1
- package/dist/resolve-loader.d.mts +1 -0
- package/dist/resolve-loader.d.mts.map +1 -1
- package/dist/resolve-loader.mjs +43 -0
- package/dist/resolve-loader.mjs.map +1 -1
- package/dist/runAnalysis.d.ts +19 -0
- package/dist/runAnalysis.d.ts.map +1 -0
- package/dist/runAnalysis.js +130 -0
- package/dist/runAnalysis.js.map +1 -0
- package/dist/runnerEvidence.d.ts +19 -0
- package/dist/runnerEvidence.d.ts.map +1 -0
- package/dist/runnerEvidence.js +93 -0
- package/dist/runnerEvidence.js.map +1 -0
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +3 -1
- package/dist/runtime.js.map +1 -1
- package/dist/sourceDiscovery.d.ts +9 -0
- package/dist/sourceDiscovery.d.ts.map +1 -0
- package/dist/sourceDiscovery.js +227 -0
- package/dist/sourceDiscovery.js.map +1 -0
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js +11 -5
- package/dist/transport.js.map +1 -1
- package/dist/types.d.ts +15 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/vitePlugin.d.ts +5 -0
- package/dist/vitePlugin.d.ts.map +1 -1
- package/dist/vitePlugin.js +44 -3
- package/dist/vitePlugin.js.map +1 -1
- package/dist/workspace.d.ts +39 -4
- package/dist/workspace.d.ts.map +1 -1
- package/dist/workspace.js +263 -46
- package/dist/workspace.js.map +1 -1
- package/docs/performance.md +107 -0
- package/docs/workspace-isolation.md +118 -0
- package/package.json +12 -2
package/dist/project.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.js","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"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"}
|
package/dist/query.d.ts
CHANGED
|
@@ -1,3 +1,27 @@
|
|
|
1
|
+
import type { McdcReport } from "./types.ts";
|
|
2
|
+
interface QueryOptions {
|
|
3
|
+
run?: string;
|
|
4
|
+
kind?: string;
|
|
5
|
+
runner?: string;
|
|
6
|
+
filter: "all" | "passed" | "failed";
|
|
7
|
+
limit: number;
|
|
8
|
+
offset: number;
|
|
9
|
+
json: boolean;
|
|
10
|
+
target: number;
|
|
11
|
+
metric: "all" | "lines" | "statements" | "functions" | "branches" | "mcdc";
|
|
12
|
+
positional: string[];
|
|
13
|
+
}
|
|
14
|
+
export interface MinimumTestSetResult {
|
|
15
|
+
optimal: true;
|
|
16
|
+
target: number;
|
|
17
|
+
metric: QueryOptions["metric"];
|
|
18
|
+
selected: string[];
|
|
19
|
+
expanded: string[];
|
|
20
|
+
summary: McdcReport["summary"];
|
|
21
|
+
exploredStates: number;
|
|
22
|
+
}
|
|
23
|
+
/** Exact branch-and-bound solver; MC/DC obligations retain their witness-pair structure. */
|
|
24
|
+
export declare function minimumTestSet(report: McdcReport, target?: number, metric?: QueryOptions["metric"]): MinimumTestSetResult;
|
|
1
25
|
export interface CoverageQueryInvocation {
|
|
2
26
|
command: string;
|
|
3
27
|
args: string[];
|
|
@@ -6,4 +30,5 @@ export interface CoverageQueryInvocation {
|
|
|
6
30
|
export declare function resolveCoverageQueryInvocation(command: string, args: string[]): CoverageQueryInvocation;
|
|
7
31
|
export declare function runQueryCommand(command: string, args: string[], root?: string): Promise<void>;
|
|
8
32
|
export declare const coverageQueryCommands: Set<string>;
|
|
33
|
+
export {};
|
|
9
34
|
//# sourceMappingURL=query.d.ts.map
|
package/dist/query.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAGV,UAAU,EAEX,MAAM,YAAY,CAAC;AAiCpB,UAAU,YAAY;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,KAAK,GAAG,OAAO,GAAG,YAAY,GAAG,WAAW,GAAG,UAAU,GAAG,MAAM,CAAC;IAC3E,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAoLD,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,IAAI,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC/B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;CACxB;AA4FD,4FAA4F;AAC5F,wBAAgB,cAAc,CAC5B,MAAM,EAAE,UAAU,EAClB,MAAM,SAAM,EACZ,MAAM,GAAE,YAAY,CAAC,QAAQ,CAAS,GACrC,oBAAoB,CA+FtB;AAoVD,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,2DAA2D;AAC3D,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,GACb,uBAAuB,CAmCzB;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,SAAgB,GACnB,OAAO,CAAC,IAAI,CAAC,CAg2Bf;AAED,eAAO,MAAM,qBAAqB,aAAoC,CAAC"}
|
package/dist/query.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { existsSync, readFileSync, readdirSync } from "node:fs";
|
|
2
2
|
import { resolve } from "node:path";
|
|
3
3
|
import { fileURLToPath } from "node:url";
|
|
4
|
-
import { gunzipSync } from "node:zlib";
|
|
5
4
|
import { coverageSummaryForTests, isIndependencePair } from "./analyze.js";
|
|
5
|
+
import { EVIDENCE_ARCHIVE_SCHEMA_VERSION } from "./evidenceArchive.js";
|
|
6
|
+
import { analyzeCoverageArchive } from "./runAnalysis.js";
|
|
6
7
|
import { compareRunIntegrity, createRunIntegrity } from "./integrity.js";
|
|
7
8
|
import { discoverCoverageProject } from "./project.js";
|
|
8
9
|
function parseOptions(args) {
|
|
@@ -11,6 +12,8 @@ function parseOptions(args) {
|
|
|
11
12
|
offset: 0,
|
|
12
13
|
json: false,
|
|
13
14
|
filter: "all",
|
|
15
|
+
target: 100,
|
|
16
|
+
metric: "all",
|
|
14
17
|
positional: [],
|
|
15
18
|
};
|
|
16
19
|
for (let index = 0; index < args.length; index += 1) {
|
|
@@ -23,6 +26,18 @@ function parseOptions(args) {
|
|
|
23
26
|
options.kind = args[++index]?.toLowerCase();
|
|
24
27
|
else if (value === "--runner")
|
|
25
28
|
options.runner = args[++index]?.toLowerCase();
|
|
29
|
+
else if (value === "--target") {
|
|
30
|
+
const target = Number(args[++index]);
|
|
31
|
+
if (!Number.isFinite(target) || target < 0 || target > 100)
|
|
32
|
+
throw new Error("--target must be between 0 and 100");
|
|
33
|
+
options.target = target;
|
|
34
|
+
}
|
|
35
|
+
else if (value === "--metric") {
|
|
36
|
+
const metric = args[++index]?.toLowerCase();
|
|
37
|
+
if (!metric || !["all", "lines", "statements", "functions", "branches", "mcdc"].includes(metric))
|
|
38
|
+
throw new Error("--metric must be all, lines, statements, functions, branches, or mcdc");
|
|
39
|
+
options.metric = metric;
|
|
40
|
+
}
|
|
26
41
|
else if (value === "--filter") {
|
|
27
42
|
const filter = args[++index]?.toLowerCase();
|
|
28
43
|
if (filter !== "all" && filter !== "passed" && filter !== "failed")
|
|
@@ -51,11 +66,7 @@ function filteredCoverage(report, options) {
|
|
|
51
66
|
}
|
|
52
67
|
function readJson(path) {
|
|
53
68
|
try {
|
|
54
|
-
|
|
55
|
-
const text = path.endsWith(".gz")
|
|
56
|
-
? gunzipSync(contents).toString("utf8")
|
|
57
|
-
: contents.toString("utf8");
|
|
58
|
-
return JSON.parse(text);
|
|
69
|
+
return JSON.parse(readFileSync(path, "utf8"));
|
|
59
70
|
}
|
|
60
71
|
catch {
|
|
61
72
|
return undefined;
|
|
@@ -68,18 +79,29 @@ function discoverRuns(root) {
|
|
|
68
79
|
for (const entry of readdirSync(canonical, { withFileTypes: true })) {
|
|
69
80
|
if (!entry.isDirectory())
|
|
70
81
|
continue;
|
|
71
|
-
const
|
|
72
|
-
|
|
82
|
+
const evidencePath = resolve(canonical, entry.name, "evidence.raw.gz");
|
|
83
|
+
const metadata = readJson(resolve(canonical, entry.name, "run.json"));
|
|
84
|
+
if (!existsSync(evidencePath) ||
|
|
85
|
+
!metadata ||
|
|
86
|
+
metadata.rawEvidence?.schemaVersion !== EVIDENCE_ARCHIVE_SCHEMA_VERSION)
|
|
73
87
|
continue;
|
|
74
88
|
runs.set(entry.name, {
|
|
75
89
|
id: entry.name,
|
|
76
|
-
|
|
77
|
-
metadata
|
|
90
|
+
evidencePath,
|
|
91
|
+
metadata,
|
|
78
92
|
});
|
|
79
93
|
}
|
|
80
94
|
}
|
|
81
95
|
return [...runs.values()].sort((left, right) => right.id.localeCompare(left.id));
|
|
82
96
|
}
|
|
97
|
+
function analyzeStoredRun(run) {
|
|
98
|
+
return analyzeCoverageArchive(run.evidencePath, {
|
|
99
|
+
runId: run.id,
|
|
100
|
+
testExitCode: run.metadata?.testExitCode,
|
|
101
|
+
integrity: run.metadata?.integrity,
|
|
102
|
+
generatedAt: run.metadata?.startedAt,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
83
105
|
function selectRun(root, selector, currentIntegrity) {
|
|
84
106
|
const runs = discoverRuns(root);
|
|
85
107
|
if (runs.length === 0)
|
|
@@ -90,9 +112,7 @@ function selectRun(root, selector, currentIntegrity) {
|
|
|
90
112
|
runs.find((run) => run.id.startsWith(selector)));
|
|
91
113
|
if (!selected)
|
|
92
114
|
throw new Error(`Coverage run not found: ${selector}`);
|
|
93
|
-
const report =
|
|
94
|
-
if (!report)
|
|
95
|
-
throw new Error(`Cannot read ${selected.reportPath}`);
|
|
115
|
+
const report = analyzeStoredRun(selected);
|
|
96
116
|
if (currentIntegrity) {
|
|
97
117
|
const comparison = compareRunIntegrity(selected.metadata?.integrity ?? report.integrity, currentIntegrity);
|
|
98
118
|
report.integrity = {
|
|
@@ -126,6 +146,175 @@ function pct(value) {
|
|
|
126
146
|
function shellQuote(value) {
|
|
127
147
|
return `'${value.replaceAll("'", `'\\''`)}'`;
|
|
128
148
|
}
|
|
149
|
+
function optionKey(option) {
|
|
150
|
+
return [...new Set(option)].sort().join("\0");
|
|
151
|
+
}
|
|
152
|
+
function minimumTestObligations(report, candidates) {
|
|
153
|
+
const tests = new Map(report.tests.map((test) => [test.id, test]));
|
|
154
|
+
const testsByFile = new Map();
|
|
155
|
+
for (const test of report.tests) {
|
|
156
|
+
if (test.role !== "test" || !test.file || !candidates.has(test.id))
|
|
157
|
+
continue;
|
|
158
|
+
const ids = testsByFile.get(test.file) ?? [];
|
|
159
|
+
ids.push(test.id);
|
|
160
|
+
testsByFile.set(test.file, ids);
|
|
161
|
+
}
|
|
162
|
+
const evidenceChoices = (ids) => {
|
|
163
|
+
const options = [];
|
|
164
|
+
for (const id of ids) {
|
|
165
|
+
const test = tests.get(id);
|
|
166
|
+
if (!test)
|
|
167
|
+
continue;
|
|
168
|
+
if (test.role === "background")
|
|
169
|
+
options.push([]);
|
|
170
|
+
else if (test.role === "setup" && test.file)
|
|
171
|
+
options.push(...(testsByFile.get(test.file) ?? []).map((candidate) => [candidate]));
|
|
172
|
+
else if (candidates.has(id))
|
|
173
|
+
options.push([id]);
|
|
174
|
+
}
|
|
175
|
+
return [...new Map(options.map((option) => [optionKey(option), option])).values()];
|
|
176
|
+
};
|
|
177
|
+
const obligations = [];
|
|
178
|
+
const uniqueLines = new Map();
|
|
179
|
+
for (const line of report.lines)
|
|
180
|
+
uniqueLines.set(`${line.file}:${line.line}`, line);
|
|
181
|
+
for (const [id, line] of uniqueLines)
|
|
182
|
+
obligations.push({ id: `line:${id}`, metric: "lines", options: evidenceChoices(line.tests) });
|
|
183
|
+
for (const point of report.points)
|
|
184
|
+
obligations.push({
|
|
185
|
+
id: `${point.meta.kind}:${point.meta.id}`,
|
|
186
|
+
metric: point.meta.kind === "statement" ? "statements" : "functions",
|
|
187
|
+
options: evidenceChoices(point.tests),
|
|
188
|
+
});
|
|
189
|
+
for (const branch of report.branches)
|
|
190
|
+
for (const alternative of branch.alternatives)
|
|
191
|
+
obligations.push({
|
|
192
|
+
id: `branch:${branch.meta.id}:${alternative.id}`,
|
|
193
|
+
metric: "branches",
|
|
194
|
+
options: evidenceChoices(alternative.tests),
|
|
195
|
+
});
|
|
196
|
+
for (const decision of report.decisions) {
|
|
197
|
+
for (let condition = 0; condition < decision.meta.conditions.length; condition += 1) {
|
|
198
|
+
const options = [];
|
|
199
|
+
for (let left = 0; left < decision.vectorObservations.length; left += 1) {
|
|
200
|
+
for (let right = left + 1; right < decision.vectorObservations.length; right += 1) {
|
|
201
|
+
const first = decision.vectorObservations[left];
|
|
202
|
+
const second = decision.vectorObservations[right];
|
|
203
|
+
if (!isIndependencePair(first.vector, second.vector, condition))
|
|
204
|
+
continue;
|
|
205
|
+
for (const firstChoice of evidenceChoices(first.tests))
|
|
206
|
+
for (const secondChoice of evidenceChoices(second.tests))
|
|
207
|
+
options.push([...new Set([...firstChoice, ...secondChoice])].sort());
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
obligations.push({
|
|
211
|
+
id: `mcdc:${decision.meta.id}:${condition}`,
|
|
212
|
+
metric: "mcdc",
|
|
213
|
+
options: [...new Map(options.map((option) => [optionKey(option), option])).values()],
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
return {
|
|
218
|
+
obligations,
|
|
219
|
+
expand(selected) {
|
|
220
|
+
const expanded = new Set(selected);
|
|
221
|
+
for (const test of report.tests) {
|
|
222
|
+
if (test.role === "background")
|
|
223
|
+
expanded.add(test.id);
|
|
224
|
+
else if (test.role === "setup" &&
|
|
225
|
+
test.file &&
|
|
226
|
+
(testsByFile.get(test.file) ?? []).some((id) => selected.has(id)))
|
|
227
|
+
expanded.add(test.id);
|
|
228
|
+
}
|
|
229
|
+
return expanded;
|
|
230
|
+
},
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
function obligationSatisfied(obligation, selected) {
|
|
234
|
+
return obligation.options.some((option) => option.every((test) => selected.has(test)));
|
|
235
|
+
}
|
|
236
|
+
/** Exact branch-and-bound solver; MC/DC obligations retain their witness-pair structure. */
|
|
237
|
+
export function minimumTestSet(report, target = 100, metric = "all") {
|
|
238
|
+
const unattributed = report.tests.filter((test) => test.role === "background" &&
|
|
239
|
+
(test.hits.length > 0 || test.decisions.some((decision) => decision.vectors.length > 0)));
|
|
240
|
+
if (unattributed.length > 0) {
|
|
241
|
+
throw new Error("Cannot minimize exactly: this coverage view contains background/unattributed evidence. Use a runner with exact test attribution or select a fully attributed coverage view.");
|
|
242
|
+
}
|
|
243
|
+
const candidateTests = report.tests
|
|
244
|
+
.filter((test) => test.role === "test")
|
|
245
|
+
.map((test) => test.id)
|
|
246
|
+
.sort();
|
|
247
|
+
const candidates = new Set(candidateTests);
|
|
248
|
+
const model = minimumTestObligations(report, candidates);
|
|
249
|
+
const metrics = metric === "all"
|
|
250
|
+
? ["lines", "statements", "functions", "branches", "mcdc"]
|
|
251
|
+
: [metric];
|
|
252
|
+
const obligations = model.obligations.filter((obligation) => metrics.includes(obligation.metric));
|
|
253
|
+
const totals = new Map();
|
|
254
|
+
for (const obligation of obligations)
|
|
255
|
+
totals.set(obligation.metric, (totals.get(obligation.metric) ?? 0) + 1);
|
|
256
|
+
const skipLimits = new Map();
|
|
257
|
+
for (const selectedMetric of metrics) {
|
|
258
|
+
const total = totals.get(selectedMetric) ?? 0;
|
|
259
|
+
const required = Math.ceil((total * target) / 100);
|
|
260
|
+
skipLimits.set(selectedMetric, total - required);
|
|
261
|
+
}
|
|
262
|
+
let best = new Set(candidateTests);
|
|
263
|
+
const fullExpanded = model.expand(best);
|
|
264
|
+
const fullSummary = coverageSummaryForTests(report, fullExpanded);
|
|
265
|
+
const percentage = (selectedMetric, summary) => selectedMetric === "mcdc" ? summary.conditionCoveragePct : summary[selectedMetric].percentage;
|
|
266
|
+
const impossible = metrics.find((selectedMetric) => percentage(selectedMetric, fullSummary) + 1e-9 < target);
|
|
267
|
+
if (impossible)
|
|
268
|
+
throw new Error(`The full selected test view reaches only ${percentage(impossible, fullSummary).toFixed(2)}% ${impossible}; target ${target}% is impossible`);
|
|
269
|
+
let exploredStates = 0;
|
|
270
|
+
const seen = new Set();
|
|
271
|
+
const search = (selected, skipped, skippedByMetric) => {
|
|
272
|
+
exploredStates += 1;
|
|
273
|
+
if (selected.size >= best.size)
|
|
274
|
+
return;
|
|
275
|
+
const stateKey = `${[...selected].sort().join(",")}|${[...skipped].sort().join(",")}`;
|
|
276
|
+
if (seen.has(stateKey))
|
|
277
|
+
return;
|
|
278
|
+
seen.add(stateKey);
|
|
279
|
+
const unmet = obligations.filter((obligation) => !skipped.has(obligation.id) && !obligationSatisfied(obligation, selected));
|
|
280
|
+
if (unmet.length === 0) {
|
|
281
|
+
best = new Set(selected);
|
|
282
|
+
return;
|
|
283
|
+
}
|
|
284
|
+
const obligation = unmet.sort((left, right) => {
|
|
285
|
+
const feasible = (value) => value.options.filter((option) => option.some((test) => !selected.has(test))).length;
|
|
286
|
+
return feasible(left) - feasible(right) || left.id.localeCompare(right.id);
|
|
287
|
+
})[0];
|
|
288
|
+
const additions = [...new Map(obligation.options
|
|
289
|
+
.map((option) => option.filter((test) => !selected.has(test)))
|
|
290
|
+
.filter((option) => option.length > 0)
|
|
291
|
+
.map((option) => [optionKey(option), option])).values()].sort((left, right) => left.length - right.length || optionKey(left).localeCompare(optionKey(right)));
|
|
292
|
+
for (const addition of additions) {
|
|
293
|
+
if (selected.size + addition.length >= best.size)
|
|
294
|
+
continue;
|
|
295
|
+
search(new Set([...selected, ...addition]), skipped, skippedByMetric);
|
|
296
|
+
}
|
|
297
|
+
const skippedCount = skippedByMetric.get(obligation.metric) ?? 0;
|
|
298
|
+
if (skippedCount < (skipLimits.get(obligation.metric) ?? 0)) {
|
|
299
|
+
const nextSkipped = new Set(skipped);
|
|
300
|
+
nextSkipped.add(obligation.id);
|
|
301
|
+
const nextCounts = new Map(skippedByMetric);
|
|
302
|
+
nextCounts.set(obligation.metric, skippedCount + 1);
|
|
303
|
+
search(selected, nextSkipped, nextCounts);
|
|
304
|
+
}
|
|
305
|
+
};
|
|
306
|
+
search(new Set(), new Set(), new Map());
|
|
307
|
+
const expanded = model.expand(best);
|
|
308
|
+
return {
|
|
309
|
+
optimal: true,
|
|
310
|
+
target,
|
|
311
|
+
metric,
|
|
312
|
+
selected: [...best].sort(),
|
|
313
|
+
expanded: [...expanded].sort(),
|
|
314
|
+
summary: coverageSummaryForTests(report, expanded),
|
|
315
|
+
exploredStates,
|
|
316
|
+
};
|
|
317
|
+
}
|
|
129
318
|
function coverageCommand(runId, options, child) {
|
|
130
319
|
return [
|
|
131
320
|
"npx supercov runs",
|
|
@@ -354,13 +543,17 @@ function help() {
|
|
|
354
543
|
supercov runs <run-id> coverage [--filter all|passed|failed] [--kind e2e] [--runner playwright] [--json]
|
|
355
544
|
supercov runs <run-id> coverage kinds [--json]
|
|
356
545
|
supercov runs <run-id> coverage runners [--json]
|
|
546
|
+
supercov runs <run-id> coverage scope [--limit N] [--offset N] [--json]
|
|
357
547
|
supercov runs <run-id> coverage files [--filter all|passed|failed] [--limit N] [--offset N] [--json]
|
|
358
548
|
supercov runs <run-id> coverage gaps [--filter all|passed|failed] [--kind e2e] [--limit N] [--offset N] [--json]
|
|
359
549
|
supercov runs <run-id> coverage file <source-file> [--kind e2e] [--limit N] [--offset N] [--json]
|
|
360
550
|
supercov runs <run-id> coverage decision <id|source-file:line> [--kind e2e] [--json]
|
|
361
551
|
supercov runs <run-id> coverage covers <source-file:line> [--kind e2e] [--json]
|
|
362
552
|
supercov runs <run-id> coverage test <id|name-fragment> [--kind e2e] [--limit N] [--json]
|
|
553
|
+
supercov runs <run-id> coverage minimize [--target 0..100] [--metric all|lines|statements|functions|branches|mcdc] [--filter all|passed|failed] [--limit N] [--offset N] [--json]
|
|
363
554
|
supercov diff <older-run> <newer-run> [--limit N] [--json]
|
|
555
|
+
supercov merge <run-id> <run-id> [...]
|
|
556
|
+
supercov prune [--keep N] [--dry-run]
|
|
364
557
|
supercov clean [--keep N] [--dry-run]
|
|
365
558
|
|
|
366
559
|
Use "latest" as <run-id> to query the newest local run.
|
|
@@ -384,12 +577,14 @@ export function resolveCoverageQueryInvocation(command, args) {
|
|
|
384
577
|
"summary",
|
|
385
578
|
"kinds",
|
|
386
579
|
"runners",
|
|
580
|
+
"scope",
|
|
387
581
|
"files",
|
|
388
582
|
"gaps",
|
|
389
583
|
"file",
|
|
390
584
|
"decision",
|
|
391
585
|
"covers",
|
|
392
586
|
"test",
|
|
587
|
+
"minimize",
|
|
393
588
|
]);
|
|
394
589
|
if (!coverageCommands.has(child)) {
|
|
395
590
|
throw new Error(`Unknown coverage query: ${child}. Try supercov help.`);
|
|
@@ -409,19 +604,19 @@ export async function runQueryCommand(command, args, root = process.cwd()) {
|
|
|
409
604
|
if (command === "runs") {
|
|
410
605
|
const availableRuns = discoverRuns(root);
|
|
411
606
|
const runs = page(availableRuns, options).map((run) => {
|
|
412
|
-
const
|
|
413
|
-
const report = storedReport
|
|
414
|
-
? filteredCoverage(storedReport, options)
|
|
415
|
-
: undefined;
|
|
607
|
+
const report = filteredCoverage(analyzeStoredRun(run), options);
|
|
416
608
|
return {
|
|
417
609
|
id: run.id,
|
|
418
|
-
generatedAt: report
|
|
419
|
-
lines: report
|
|
420
|
-
branches: report
|
|
421
|
-
mcdc: report
|
|
610
|
+
generatedAt: report.generatedAt,
|
|
611
|
+
lines: report.summary.lines.percentage,
|
|
612
|
+
branches: report.summary.branches.percentage,
|
|
613
|
+
mcdc: report.summary.conditionCoveragePct,
|
|
422
614
|
command: run.metadata?.command,
|
|
423
615
|
durationMs: run.metadata?.durationMs,
|
|
616
|
+
timings: run.metadata?.timings,
|
|
424
617
|
testExitCode: run.metadata?.testExitCode,
|
|
618
|
+
buildReused: run.metadata?.instrumentedBuildCache?.reused,
|
|
619
|
+
rawEvidence: run.metadata?.rawEvidence,
|
|
425
620
|
...(currentIntegrity
|
|
426
621
|
? compareRunIntegrity(run.metadata?.integrity, currentIntegrity)
|
|
427
622
|
: { stale: undefined, reasons: [] }),
|
|
@@ -584,9 +779,73 @@ export async function runQueryCommand(command, args, root = process.cwd()) {
|
|
|
584
779
|
tests: testCount,
|
|
585
780
|
setups: setupCount,
|
|
586
781
|
testOutcomes,
|
|
782
|
+
sourceScope: report.scope
|
|
783
|
+
? {
|
|
784
|
+
mode: report.scope.mode,
|
|
785
|
+
roots: report.scope.roots,
|
|
786
|
+
included: report.scope.entries.filter((entry) => entry.status === "included").length,
|
|
787
|
+
excluded: report.scope.entries.filter((entry) => entry.status === "excluded").length,
|
|
788
|
+
ambiguous: report.scope.entries.filter((entry) => entry.status === "ambiguous").length,
|
|
789
|
+
}
|
|
790
|
+
: undefined,
|
|
587
791
|
};
|
|
588
792
|
return output(result, options, `run ${run.id}${filterLabel(options) ? ` (${filterLabel(options)})` : ""}${run.metadata?.testExitCode !== 0 ? ` [INVALID: test exit ${run.metadata?.testExitCode ?? "unknown"}]` : ""}${report.integrity?.stale ? ` [STALE: ${(report.integrity.staleReasons ?? []).join(", ")}]` : ""}\nlines ${pct(summary.lines.percentage)} (${summary.lines.covered}/${summary.lines.total})\nbranches ${pct(summary.branches.percentage)} (${summary.branches.covered}/${summary.branches.total})\nMC/DC ${pct(summary.conditionCoveragePct)} (${summary.coveredConditions}/${summary.conditions})${!selectedTestSet ? `\nconfidence: ${report.lines.filter((line) => line.confidence?.level === "asserted").length} asserted lines, ${report.lines.filter((line) => line.confidence?.level === "action").length} action-linked, ${report.lines.filter((line) => line.confidence?.level === "executed").length} execution-only; ${report.decisions.reduce((total, decision) => total + decision.conditions.filter((condition) => condition.assertionCovered).length, 0)} assertion-linked MC/DC conditions` : ""}\n${testCount} test(s)${setupCount ? ` + ${setupCount} setup scope(s)` : ""}; outcomes ${Object.entries(testOutcomes).filter(([, count]) => count > 0).map(([outcome, count]) => `${outcome}=${count}`).join(", ") || "none"}; ${gaps.length} file(s) have remaining obligations${(report.limitations?.length ?? 0) ? `; ${report.limitations.length} completeness blocker(s)` : ""}`);
|
|
589
793
|
}
|
|
794
|
+
if (command === "minimize") {
|
|
795
|
+
const solverReport = selectedTestSet
|
|
796
|
+
? {
|
|
797
|
+
...report,
|
|
798
|
+
tests: report.tests.filter((test) => selectedTestSet.has(test.id)),
|
|
799
|
+
}
|
|
800
|
+
: report;
|
|
801
|
+
const minimized = minimumTestSet(solverReport, options.target, options.metric);
|
|
802
|
+
const selectedDetails = minimized.selected.map((id) => {
|
|
803
|
+
const test = report.tests.find((candidate) => candidate.id === id);
|
|
804
|
+
return {
|
|
805
|
+
id,
|
|
806
|
+
name: test.name,
|
|
807
|
+
file: test.file,
|
|
808
|
+
runner: test.provenance.runner,
|
|
809
|
+
kind: test.provenance.kind,
|
|
810
|
+
};
|
|
811
|
+
});
|
|
812
|
+
const selectedPage = page(selectedDetails, options);
|
|
813
|
+
const base = `${coverageCommand(run.id, options, "minimize")} --target ${options.target}${options.metric !== "all" ? ` --metric ${options.metric}` : ""}`;
|
|
814
|
+
const next = nextPageCommand(base, selectedDetails.length, selectedPage.length, options);
|
|
815
|
+
return output({
|
|
816
|
+
run: run.id,
|
|
817
|
+
...minimized,
|
|
818
|
+
selectedCount: selectedDetails.length,
|
|
819
|
+
totalCandidateTests: solverReport.tests.filter((test) => test.role === "test").length,
|
|
820
|
+
offset: options.offset,
|
|
821
|
+
tests: selectedPage,
|
|
822
|
+
}, options, `exact minimum ${selectedDetails.length}/${solverReport.tests.filter((test) => test.role === "test").length} test(s) for ${options.target}% ${options.metric === "all" ? "coverage across all measured metrics" : options.metric}; explored ${minimized.exploredStates} state(s)\nlines ${pct(minimized.summary.lines.percentage)}, statements ${pct(minimized.summary.statements.percentage)}, functions ${pct(minimized.summary.functions.percentage)}, branches ${pct(minimized.summary.branches.percentage)}, MC/DC ${pct(minimized.summary.conditionCoveragePct)}\n${selectedPage.map((test) => `${test.id} ${test.kind}/${test.runner} ${test.file ?? "unknown"} ${test.name}`).join("\n")}\n${pageLabel(selectedDetails.length, selectedPage.length, options)}${next ? `\nnext page: ${next}` : ""}`);
|
|
823
|
+
}
|
|
824
|
+
if (command === "scope") {
|
|
825
|
+
if (!report.scope)
|
|
826
|
+
throw new Error("This run does not contain a source-scope inventory.");
|
|
827
|
+
const ordered = [...report.scope.entries].sort((left, right) => {
|
|
828
|
+
const rank = { ambiguous: 0, included: 1, excluded: 2 };
|
|
829
|
+
return rank[left.status] - rank[right.status] || left.file.localeCompare(right.file);
|
|
830
|
+
});
|
|
831
|
+
const selectedEntries = page(ordered, options);
|
|
832
|
+
const base = coverageCommand(run.id, options, "scope");
|
|
833
|
+
const next = nextPageCommand(base, ordered.length, selectedEntries.length, options);
|
|
834
|
+
const counts = {
|
|
835
|
+
included: ordered.filter((entry) => entry.status === "included").length,
|
|
836
|
+
excluded: ordered.filter((entry) => entry.status === "excluded").length,
|
|
837
|
+
ambiguous: ordered.filter((entry) => entry.status === "ambiguous").length,
|
|
838
|
+
};
|
|
839
|
+
return output({
|
|
840
|
+
run: run.id,
|
|
841
|
+
mode: report.scope.mode,
|
|
842
|
+
roots: report.scope.roots,
|
|
843
|
+
counts,
|
|
844
|
+
total: ordered.length,
|
|
845
|
+
offset: options.offset,
|
|
846
|
+
entries: selectedEntries,
|
|
847
|
+
}, options, `mode ${report.scope.mode}; roots ${report.scope.roots.join(", ") || "none"}; included ${counts.included}, excluded ${counts.excluded}, ambiguous ${counts.ambiguous}\n${selectedEntries.map((entry) => `${entry.status.toUpperCase()} ${entry.file} ${entry.reason}${entry.packageRoot ? ` [package ${entry.packageRoot}]` : ""}`).join("\n")}\n${pageLabel(ordered.length, selectedEntries.length, options)}${next ? `\nnext page: ${next}` : ""}`);
|
|
848
|
+
}
|
|
590
849
|
if (command === "kinds" || command === "runners") {
|
|
591
850
|
const dimension = command === "kinds" ? report.coverageByKind : report.coverageByRunner;
|
|
592
851
|
const selectedDimension = page(dimension, options);
|