supercov 0.0.9 → 0.0.12
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 +28 -23
- package/bin/native.js +87 -0
- package/bin/supercov.js +10 -4
- package/package.json +39 -25
- package/{dist → runtime/javascript}/atomic.js +0 -1
- package/{dist → runtime/javascript}/launchSupervisor.js +3 -1
- package/{dist → runtime/javascript}/nodeAssert.js +0 -1
- package/{dist → runtime/javascript}/nodeAssertAdapter.js +0 -1
- package/{dist → runtime/javascript}/nodeAssertStrict.js +0 -1
- package/{dist → runtime/javascript}/nodeTest.js +13 -5
- package/{dist → runtime/javascript}/playwright.js +177 -90
- package/{dist → runtime/javascript}/playwrightReporter.js +0 -1
- package/{dist → runtime/javascript}/provenance.js +0 -1
- package/{dist → runtime/javascript}/register.mjs +52 -1
- package/{dist → runtime/javascript}/resolve-loader.mjs +0 -36
- package/{dist → runtime/javascript}/runnerEvidence.js +6 -5
- package/{dist → runtime/javascript}/runtime.js +308 -27
- package/{dist → runtime/javascript}/transport.js +2 -3
- package/{dist → runtime/javascript}/vitest.js +38 -8
- package/{dist → runtime/javascript}/vitestReporter.js +0 -1
- package/dist/agentJson.d.ts +0 -44
- package/dist/agentJson.d.ts.map +0 -1
- package/dist/agentJson.js +0 -84
- package/dist/agentJson.js.map +0 -1
- package/dist/analyze.d.ts +0 -12
- package/dist/analyze.d.ts.map +0 -1
- package/dist/analyze.js +0 -699
- package/dist/analyze.js.map +0 -1
- package/dist/atomic.d.ts +0 -6
- package/dist/atomic.d.ts.map +0 -1
- package/dist/atomic.js.map +0 -1
- package/dist/buildCache.d.ts +0 -14
- package/dist/buildCache.d.ts.map +0 -1
- package/dist/buildCache.js +0 -84
- package/dist/buildCache.js.map +0 -1
- package/dist/cli.d.ts +0 -2
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -706
- package/dist/cli.js.map +0 -1
- package/dist/directInstrumenter.d.ts +0 -8
- package/dist/directInstrumenter.d.ts.map +0 -1
- package/dist/directInstrumenter.js +0 -92
- package/dist/directInstrumenter.js.map +0 -1
- package/dist/esmInterceptor.d.ts +0 -6
- package/dist/esmInterceptor.d.ts.map +0 -1
- package/dist/esmInterceptor.js +0 -63
- package/dist/esmInterceptor.js.map +0 -1
- package/dist/evidenceArchive.d.ts +0 -37
- package/dist/evidenceArchive.d.ts.map +0 -1
- package/dist/evidenceArchive.js +0 -110
- package/dist/evidenceArchive.js.map +0 -1
- package/dist/instrumenter.d.ts +0 -11
- package/dist/instrumenter.d.ts.map +0 -1
- package/dist/instrumenter.js +0 -1246
- package/dist/instrumenter.js.map +0 -1
- package/dist/integrity.d.ts +0 -10
- package/dist/integrity.d.ts.map +0 -1
- package/dist/integrity.js +0 -205
- package/dist/integrity.js.map +0 -1
- package/dist/launchSupervisor.d.ts +0 -38
- package/dist/launchSupervisor.d.ts.map +0 -1
- package/dist/launchSupervisor.js.map +0 -1
- package/dist/merge.d.ts +0 -2
- package/dist/merge.d.ts.map +0 -1
- package/dist/merge.js +0 -116
- package/dist/merge.js.map +0 -1
- package/dist/nodeAssert.d.ts +0 -31
- package/dist/nodeAssert.d.ts.map +0 -1
- package/dist/nodeAssert.js.map +0 -1
- package/dist/nodeAssertAdapter.d.ts +0 -6
- package/dist/nodeAssertAdapter.d.ts.map +0 -1
- package/dist/nodeAssertAdapter.js.map +0 -1
- package/dist/nodeAssertStrict.d.ts +0 -31
- package/dist/nodeAssertStrict.d.ts.map +0 -1
- package/dist/nodeAssertStrict.js.map +0 -1
- package/dist/nodeAssertionInstrumenter.d.ts +0 -8
- package/dist/nodeAssertionInstrumenter.d.ts.map +0 -1
- package/dist/nodeAssertionInstrumenter.js +0 -263
- package/dist/nodeAssertionInstrumenter.js.map +0 -1
- package/dist/nodeTest.d.ts +0 -15
- package/dist/nodeTest.d.ts.map +0 -1
- package/dist/nodeTest.js.map +0 -1
- package/dist/playwright.d.ts +0 -9
- package/dist/playwright.d.ts.map +0 -1
- package/dist/playwright.js.map +0 -1
- package/dist/playwrightReporter.d.ts +0 -6
- package/dist/playwrightReporter.d.ts.map +0 -1
- package/dist/playwrightReporter.js.map +0 -1
- package/dist/project.d.ts +0 -20
- package/dist/project.d.ts.map +0 -1
- package/dist/project.js +0 -296
- package/dist/project.js.map +0 -1
- package/dist/provenance.d.ts +0 -9
- package/dist/provenance.d.ts.map +0 -1
- package/dist/provenance.js.map +0 -1
- package/dist/query.d.ts +0 -70
- package/dist/query.d.ts.map +0 -1
- package/dist/query.js +0 -1443
- package/dist/query.js.map +0 -1
- package/dist/queryCache.d.ts +0 -15
- package/dist/queryCache.d.ts.map +0 -1
- package/dist/queryCache.js +0 -95
- package/dist/queryCache.js.map +0 -1
- package/dist/queueAdapters.d.ts +0 -15
- package/dist/queueAdapters.d.ts.map +0 -1
- package/dist/queueAdapters.js +0 -55
- package/dist/queueAdapters.js.map +0 -1
- package/dist/register.d.mts +0 -2
- package/dist/register.d.mts.map +0 -1
- package/dist/register.mjs.map +0 -1
- package/dist/reporter.d.ts +0 -13
- package/dist/reporter.d.ts.map +0 -1
- package/dist/reporter.js +0 -252
- package/dist/reporter.js.map +0 -1
- package/dist/resolve-loader.d.mts +0 -3
- package/dist/resolve-loader.d.mts.map +0 -1
- package/dist/resolve-loader.mjs.map +0 -1
- package/dist/runAnalysis.d.ts +0 -19
- package/dist/runAnalysis.d.ts.map +0 -1
- package/dist/runAnalysis.js +0 -169
- package/dist/runAnalysis.js.map +0 -1
- package/dist/runnerEvidence.d.ts +0 -19
- package/dist/runnerEvidence.d.ts.map +0 -1
- package/dist/runnerEvidence.js.map +0 -1
- package/dist/runtime.d.ts +0 -88
- package/dist/runtime.d.ts.map +0 -1
- package/dist/runtime.js.map +0 -1
- package/dist/runtimeIsolation.d.ts +0 -3
- package/dist/runtimeIsolation.d.ts.map +0 -1
- package/dist/runtimeIsolation.js +0 -9
- package/dist/runtimeIsolation.js.map +0 -1
- package/dist/sourceDiscovery.d.ts +0 -9
- package/dist/sourceDiscovery.d.ts.map +0 -1
- package/dist/sourceDiscovery.js +0 -238
- package/dist/sourceDiscovery.js.map +0 -1
- package/dist/transport.d.ts +0 -17
- package/dist/transport.d.ts.map +0 -1
- package/dist/transport.js.map +0 -1
- package/dist/types.d.ts +0 -378
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
- package/dist/vitePlugin.d.ts +0 -13
- package/dist/vitePlugin.d.ts.map +0 -1
- package/dist/vitePlugin.js +0 -125
- package/dist/vitePlugin.js.map +0 -1
- package/dist/vitest.d.ts +0 -2
- package/dist/vitest.d.ts.map +0 -1
- package/dist/vitest.js.map +0 -1
- package/dist/vitestReporter.d.ts +0 -43
- package/dist/vitestReporter.d.ts.map +0 -1
- package/dist/vitestReporter.js.map +0 -1
- package/dist/workspace.d.ts +0 -81
- package/dist/workspace.d.ts.map +0 -1
- package/dist/workspace.js +0 -504
- package/dist/workspace.js.map +0 -1
package/dist/reporter.js
DELETED
|
@@ -1,252 +0,0 @@
|
|
|
1
|
-
import { existsSync, readFileSync, readdirSync, statSync, } from "node:fs";
|
|
2
|
-
import { basename, dirname, resolve } from "node:path";
|
|
3
|
-
import { analyzeCoverageResults } from "./runAnalysis.js";
|
|
4
|
-
export { failedCoverageResults, passingCoverageResults, } from "./runAnalysis.js";
|
|
5
|
-
import { backgroundEvidenceDirectory, } from "./transport.js";
|
|
6
|
-
function findFiles(root, name) {
|
|
7
|
-
if (!existsSync(root))
|
|
8
|
-
return [];
|
|
9
|
-
const found = [];
|
|
10
|
-
for (const entry of readdirSync(root, { withFileTypes: true })) {
|
|
11
|
-
const path = resolve(root, entry.name);
|
|
12
|
-
if (entry.isDirectory())
|
|
13
|
-
found.push(...findFiles(path, name));
|
|
14
|
-
else if (entry.name === name)
|
|
15
|
-
found.push(path);
|
|
16
|
-
}
|
|
17
|
-
return found;
|
|
18
|
-
}
|
|
19
|
-
function readBackgroundEvidence(runId, serverEvidenceRoot) {
|
|
20
|
-
const directory = backgroundEvidenceDirectory(runId, serverEvidenceRoot);
|
|
21
|
-
if (!existsSync(directory))
|
|
22
|
-
return undefined;
|
|
23
|
-
const records = readdirSync(directory, { withFileTypes: true }).flatMap((entry) => {
|
|
24
|
-
if (!entry.isFile() || !entry.name.endsWith(".jsonl"))
|
|
25
|
-
return [];
|
|
26
|
-
return readFileSync(resolve(directory, entry.name), "utf8")
|
|
27
|
-
.split("\n")
|
|
28
|
-
.filter(Boolean)
|
|
29
|
-
.flatMap((line) => {
|
|
30
|
-
try {
|
|
31
|
-
return [JSON.parse(line)];
|
|
32
|
-
}
|
|
33
|
-
catch {
|
|
34
|
-
return [];
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
});
|
|
38
|
-
if (records.length === 0)
|
|
39
|
-
return undefined;
|
|
40
|
-
return {
|
|
41
|
-
testId: `background:${runId}`,
|
|
42
|
-
test: "Background / unattributed",
|
|
43
|
-
title: "Background / unattributed",
|
|
44
|
-
status: "unknown",
|
|
45
|
-
provenance: {
|
|
46
|
-
runner: "background",
|
|
47
|
-
kind: "background",
|
|
48
|
-
source: "explicit",
|
|
49
|
-
},
|
|
50
|
-
role: "background",
|
|
51
|
-
browser: [],
|
|
52
|
-
server: records,
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
function formatVector(vector) {
|
|
56
|
-
return `${vector.values.map((value) => (value === null ? "–" : value ? "T" : "F")).join(" ")} → ${vector.outcome ? "T" : "F"}`;
|
|
57
|
-
}
|
|
58
|
-
function escapeHtml(value) {
|
|
59
|
-
return String(value)
|
|
60
|
-
.replaceAll("&", "&")
|
|
61
|
-
.replaceAll("<", "<")
|
|
62
|
-
.replaceAll(">", ">")
|
|
63
|
-
.replaceAll('"', """);
|
|
64
|
-
}
|
|
65
|
-
/** Derived presentation primitive reserved for a future explicit preview command. */
|
|
66
|
-
export function renderHtml(report, filter, runValid) {
|
|
67
|
-
const testNames = new Map(report.tests.map((test) => [test.id, test.name]));
|
|
68
|
-
const phaseNames = new Map(report.phases.map((phase) => [
|
|
69
|
-
phase.id,
|
|
70
|
-
`${phase.operation}${phase.source ? ` at ${phase.source}` : ""}`,
|
|
71
|
-
]));
|
|
72
|
-
const formatTests = (tests) => tests.map((test) => escapeHtml(testNames.get(test) ?? test)).join(", ");
|
|
73
|
-
const decisionRows = report.decisions
|
|
74
|
-
.map((decision) => {
|
|
75
|
-
const conditionRows = decision.conditions
|
|
76
|
-
.map((condition) => `
|
|
77
|
-
<li class="${condition.covered ? "covered" : "missing"}">
|
|
78
|
-
C${condition.index + 1}: <code>${escapeHtml(condition.source)}</code>
|
|
79
|
-
${condition.assertionCovered ? '<strong class="covered">assertion-linked</strong>' : '<small>execution-only</small>'}
|
|
80
|
-
— ${condition.covered
|
|
81
|
-
? `covered by ${condition
|
|
82
|
-
.witness.map((vector, index) => `${formatVector(vector)} [${formatTests(condition.witnessTests?.[index] ?? [])}]`)
|
|
83
|
-
.join(" / ")}`
|
|
84
|
-
: "missing independence pair"}
|
|
85
|
-
</li>`)
|
|
86
|
-
.join("");
|
|
87
|
-
const vectorRows = decision.vectorObservations
|
|
88
|
-
.map((observation) => `<li><code>${escapeHtml(formatVector(observation.vector))}</code> — ${formatTests(observation.tests)} <small>confidence: ${escapeHtml(observation.confidence?.level ?? "unknown")}</small>${observation.phases?.length ? `<br><small>${observation.phases.map((phase) => escapeHtml(phaseNames.get(phase) ?? phase)).join(" · ")}</small>` : ""}</li>`)
|
|
89
|
-
.join("");
|
|
90
|
-
return `
|
|
91
|
-
<section>
|
|
92
|
-
<h2>${escapeHtml(decision.meta.file)}:${decision.meta.line}:${decision.meta.column}</h2>
|
|
93
|
-
<pre>${escapeHtml(decision.meta.source)}</pre>
|
|
94
|
-
<p>${decision.vectors.length} distinct vector(s); ${decision.covered ? "fully covered" : "incomplete"}; confidence: <strong>${escapeHtml(decision.confidence?.level ?? "unknown")}</strong></p>
|
|
95
|
-
<ul>${conditionRows}</ul>
|
|
96
|
-
<details><summary>Vector-to-test attribution</summary><ul>${vectorRows || "<li>None</li>"}</ul></details>
|
|
97
|
-
</section>`;
|
|
98
|
-
})
|
|
99
|
-
.join("");
|
|
100
|
-
const branchRows = report.branches
|
|
101
|
-
.map((branch) => `
|
|
102
|
-
<section>
|
|
103
|
-
<h2>${escapeHtml(branch.meta.file)}:${branch.meta.line}:${branch.meta.column}</h2>
|
|
104
|
-
<p><strong>${escapeHtml(branch.meta.kind)}</strong></p>
|
|
105
|
-
<pre>${escapeHtml(branch.meta.source)}</pre>
|
|
106
|
-
<ul>${branch.alternatives
|
|
107
|
-
.map((alternative) => `
|
|
108
|
-
<li class="${alternative.covered ? "covered" : "missing"}">
|
|
109
|
-
${escapeHtml(alternative.label)} — ${alternative.covered ? `covered by ${formatTests(alternative.tests)}` : "not observed"} <small>confidence: ${escapeHtml(alternative.confidence?.level ?? "unexecuted")}</small>
|
|
110
|
-
</li>`)
|
|
111
|
-
.join("")}</ul>
|
|
112
|
-
</section>`)
|
|
113
|
-
.join("");
|
|
114
|
-
const testRows = report.tests
|
|
115
|
-
.map((test) => `
|
|
116
|
-
<section>
|
|
117
|
-
<h2>${escapeHtml(test.name)}</h2>
|
|
118
|
-
<p><small>${escapeHtml(test.provenance.kind)}/${escapeHtml(test.provenance.runner)}${test.role !== "test" ? ` — ${escapeHtml(test.role)} scope` : ""} — outcome: <strong>${escapeHtml(test.outcome)}</strong>${test.attempts.length ? ` (${test.attempts.map((attempt) => `retry ${attempt.retry}: ${attempt.status}`).join(", ")})` : ""}</small></p>
|
|
119
|
-
<p>${test.lines.length} source line(s), ${test.hits.length} point/alternative hit(s), ${test.decisions.reduce((total, decision) => total + decision.vectors.length, 0)} decision vector(s)</p>
|
|
120
|
-
<details><summary>Covered source lines</summary><p>${test.lines.length > 0
|
|
121
|
-
? test.lines
|
|
122
|
-
.map((line) => `<code>${escapeHtml(line.file)}:${line.line}</code>`)
|
|
123
|
-
.join(" · ")
|
|
124
|
-
: "None"}</p></details>
|
|
125
|
-
</section>`)
|
|
126
|
-
.join("");
|
|
127
|
-
const phaseRows = report.phases
|
|
128
|
-
.map((phase) => `
|
|
129
|
-
<section>
|
|
130
|
-
<h2><span class="${phase.kind === "assertion" ? "covered" : ""}">${escapeHtml(phase.kind)}</span> — ${escapeHtml(phase.operation)}</h2>
|
|
131
|
-
<p>${phase.source ? `<code>${escapeHtml(phase.source)}</code><br>` : ""}${escapeHtml(testNames.get(phase.test) ?? phase.test)}</p>
|
|
132
|
-
${phase.causedByPhaseId ? `<p>Observes the result of: <strong>${escapeHtml(phaseNames.get(phase.causedByPhaseId) ?? phase.causedByPhaseId)}</strong></p>` : ""}
|
|
133
|
-
<p>${phase.lines.length} source line(s), ${phase.decisions.reduce((total, decision) => total + decision.vectors.length, 0)} decision vector(s), ${phase.browserEvents} browser and ${phase.serverEvents} server event(s)<br><small>Browser: ${phase.explicitBrowserEvents} explicit / ${phase.inferredBrowserEvents} fallback. Server: ${phase.explicitServerEvents} explicit / ${phase.inferredServerEvents} fallback.</small></p>
|
|
134
|
-
<details><summary>Attributed source lines</summary><p>${phase.lines.length > 0
|
|
135
|
-
? phase.lines
|
|
136
|
-
.map((line) => `<code>${escapeHtml(line.file)}:${line.line}</code>`)
|
|
137
|
-
.join(" · ")
|
|
138
|
-
: "None"}</p></details>
|
|
139
|
-
</section>`)
|
|
140
|
-
.join("");
|
|
141
|
-
const uncoveredPoints = report.points
|
|
142
|
-
.filter((point) => !point.covered)
|
|
143
|
-
.map((point) => `
|
|
144
|
-
<li><strong>${escapeHtml(point.meta.kind)}</strong> ${escapeHtml(point.meta.file)}:${point.meta.line}:${point.meta.column}
|
|
145
|
-
— <code>${escapeHtml(point.meta.label ?? point.meta.source.slice(0, 160))}</code></li>`)
|
|
146
|
-
.join("");
|
|
147
|
-
const summary = report.summary;
|
|
148
|
-
const verifiedComplete = runValid === true && summary.coverageComplete;
|
|
149
|
-
const verdict = filter === "all"
|
|
150
|
-
? summary.coverageComplete
|
|
151
|
-
? "OBSERVED COMPLETE"
|
|
152
|
-
: "OBSERVED INCOMPLETE"
|
|
153
|
-
: filter === "failed"
|
|
154
|
-
? "DIAGNOSTIC"
|
|
155
|
-
: runValid === false
|
|
156
|
-
? "INVALID"
|
|
157
|
-
: verifiedComplete
|
|
158
|
-
? "COMPLETE"
|
|
159
|
-
: "INCOMPLETE";
|
|
160
|
-
const verdictComplete = filter === "all"
|
|
161
|
-
? summary.coverageComplete
|
|
162
|
-
: filter === "passed" && verifiedComplete;
|
|
163
|
-
return `<!doctype html>
|
|
164
|
-
<html><head><meta charset="utf-8"><title>Supercov coverage completeness</title>
|
|
165
|
-
<style>
|
|
166
|
-
body{font:15px/1.45 system-ui,sans-serif;max-width:1100px;margin:40px auto;padding:0 20px;color:#202124}
|
|
167
|
-
header{padding:22px;border-radius:12px;background:#f4f6f8}section{border-top:1px solid #ddd;padding:18px 0}
|
|
168
|
-
pre,code{font-family:ui-monospace,SFMono-Regular,monospace}pre{white-space:pre-wrap;background:#f7f7f7;padding:12px}
|
|
169
|
-
.covered{color:#176b36}.missing{color:#a12622}li{margin:7px 0}
|
|
170
|
-
.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px}.metric{background:white;padding:10px;border-radius:8px}
|
|
171
|
-
</style></head><body>
|
|
172
|
-
<nav><strong>Filter:</strong> ${filter === "all" ? "all attempts" : '<a href="report.html">all attempts</a>'} · ${filter === "passed" ? "passed" : '<a href="report-passed.html">passed</a>'} · ${filter === "failed" ? "failed" : '<a href="report-failed.html">failed</a>'}</nav>
|
|
173
|
-
<header><h1>${filter === "all" ? "Observed" : filter === "passed" ? "Passed-only verified" : "Failed-attempt"} coverage report</h1>
|
|
174
|
-
${filter === "all" ? "<p>Diagnostic aggregate: includes execution from every attempt.</p>" : filter === "passed" ? "<p>Verified filter: includes only successful attempts belonging to ultimately passing tests. Failed retry attempts are excluded.</p>" : "<p>Diagnostic filter: includes only failed attempts, including failed retries of flaky tests.</p>"}
|
|
175
|
-
<p class="${verdictComplete ? "covered" : "missing"}"><strong>${verdict}</strong> — ${filter === "passed" && runValid === false ? "the test command failed, so this run cannot establish completeness even if its passing tests cover every obligation" : filter === "failed" ? "this evidence explains what failing attempts executed and never establishes completeness" : `assuming test expectations are correct, ${summary.coverageComplete ? "all obligations in the measured model were exercised" : summary.completenessBlocked ? "a discovered construct cannot yet receive a truthful denominator" : "uncovered obligations remain in the measured model"}`}.</p>
|
|
176
|
-
<div class="metrics">
|
|
177
|
-
${[
|
|
178
|
-
["Lines", summary.lines],
|
|
179
|
-
["Statements", summary.statements],
|
|
180
|
-
["Functions", summary.functions],
|
|
181
|
-
["Branches", summary.branches],
|
|
182
|
-
["Decision outcomes", summary.decisionOutcomes],
|
|
183
|
-
["Condition outcomes", summary.conditionOutcomes],
|
|
184
|
-
["Value selections", summary.valueSelections],
|
|
185
|
-
]
|
|
186
|
-
.map(([label, metric]) => {
|
|
187
|
-
const value = metric;
|
|
188
|
-
return `<div class="metric"><strong>${label}</strong><br>${value.percentage}% (${value.covered}/${value.total})</div>`;
|
|
189
|
-
})
|
|
190
|
-
.join("")}
|
|
191
|
-
<div class="metric"><strong>Masking MC/DC</strong><br>${summary.conditionCoveragePct}% (${summary.coveredConditions}/${summary.conditions})</div>
|
|
192
|
-
</div></header>
|
|
193
|
-
<section><h1>What this verdict means</h1>
|
|
194
|
-
<p>${escapeHtml(report.model.completenessMeaning)}</p>
|
|
195
|
-
<details><summary>Measured obligations</summary><ul>${report.model.measured.map((item) => `<li>${escapeHtml(item)}</li>`).join("")}</ul></details>
|
|
196
|
-
<details><summary>Not measured</summary><ul>${report.model.notMeasured.map((item) => `<li>${escapeHtml(item)}</li>`).join("")}</ul></details>
|
|
197
|
-
${report.limitations?.length ? `<details open><summary>Completeness blockers discovered in this source</summary><ul>${report.limitations.map((item) => `<li><code>${escapeHtml(item.file)}:${item.line}:${item.column}</code> — ${escapeHtml(item.reason)}<br><code>${escapeHtml(item.source)}</code></li>`).join("")}</ul></details>` : ""}
|
|
198
|
-
</section>
|
|
199
|
-
<h1>Per-test attribution</h1>
|
|
200
|
-
<p>Each source hit and decision vector is attributed to its runner, semantic test level, and individual test. Runner setup/import work and background work are separate scopes. Confidence distinguishes execution-only evidence, actions, and action/request chains ending in a passed assertion.</p>
|
|
201
|
-
${testRows || "<p>No tests were collected.</p>"}
|
|
202
|
-
<h1>Action and assertion attribution</h1>
|
|
203
|
-
<p>Coverage events are assigned to automatically instrumented Playwright actions and assertions. Browser requests carry an explicit phase ID into Remix loaders/actions, where async context preserves it through awaited server work. Events outside a traced request are visibly counted as timing fallbacks.</p>
|
|
204
|
-
${phaseRows || "<p>No instrumented actions or assertions were collected.</p>"}
|
|
205
|
-
<h1>Uncovered statements and functions</h1><ul>${uncoveredPoints || '<li class="covered">None</li>'}</ul>
|
|
206
|
-
<h1>Control decisions</h1>${decisionRows}
|
|
207
|
-
<h1>Value and switch alternatives</h1>${branchRows || "<p>None</p>"}
|
|
208
|
-
</body></html>`;
|
|
209
|
-
}
|
|
210
|
-
export function analyzeMcdcEvidence(outputDir, runId, minimumArtifactMtimeMs = 0, configuredManifestPath, testExitCode, integrity, serverEvidenceRoot) {
|
|
211
|
-
const manifestPath = configuredManifestPath
|
|
212
|
-
? resolve(configuredManifestPath)
|
|
213
|
-
: resolve(process.cwd(), process.env["SUPERCOV_MANIFEST"] ??
|
|
214
|
-
".supercov/mcdc-manifest.json");
|
|
215
|
-
if (!existsSync(manifestPath)) {
|
|
216
|
-
throw new Error(`Coverage manifest was not found at ${manifestPath}`);
|
|
217
|
-
}
|
|
218
|
-
const manifest = JSON.parse(readFileSync(manifestPath, "utf8"));
|
|
219
|
-
const rawResults = findFiles(outputDir, "mcdc.json")
|
|
220
|
-
.filter((path) => statSync(path).mtimeMs >= minimumArtifactMtimeMs)
|
|
221
|
-
.map((path) => JSON.parse(readFileSync(path, "utf8")));
|
|
222
|
-
const background = readBackgroundEvidence(runId, serverEvidenceRoot);
|
|
223
|
-
if (background)
|
|
224
|
-
rawResults.push(background);
|
|
225
|
-
const report = analyzeCoverageResults(manifest, rawResults, {
|
|
226
|
-
runId,
|
|
227
|
-
testExitCode,
|
|
228
|
-
integrity,
|
|
229
|
-
});
|
|
230
|
-
printCoverageSummary(report);
|
|
231
|
-
return report;
|
|
232
|
-
}
|
|
233
|
-
export function printCoverageSummary(report) {
|
|
234
|
-
const passed = report.filters.passed;
|
|
235
|
-
const summary = report.summary;
|
|
236
|
-
console.log(`[coverage] lines ${summary.lines.percentage}%, statements ${summary.statements.percentage}%, ` +
|
|
237
|
-
`functions ${summary.functions.percentage}%, branches ${summary.branches.percentage}%, ` +
|
|
238
|
-
`MC/DC ${summary.conditionCoveragePct}%`);
|
|
239
|
-
console.log(`[coverage] verdict: ${summary.coverageComplete ? "COMPLETE" : "INCOMPLETE"}`);
|
|
240
|
-
console.log(`[coverage] passed only: lines ${passed.summary.lines.percentage}%, branches ${passed.summary.branches.percentage}%, MC/DC ${passed.summary.conditionCoveragePct}%`);
|
|
241
|
-
}
|
|
242
|
-
export default class McdcReporter {
|
|
243
|
-
outputDir = "";
|
|
244
|
-
onBegin(config) {
|
|
245
|
-
this.outputDir = config.projects[0]?.outputDir ?? "";
|
|
246
|
-
}
|
|
247
|
-
onEnd() {
|
|
248
|
-
const runId = basename(dirname(this.outputDir));
|
|
249
|
-
analyzeMcdcEvidence(this.outputDir, runId);
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
//# sourceMappingURL=reporter.js.map
|
package/dist/reporter.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"reporter.js","sourceRoot":"","sources":["../src/reporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-loader.d.mts","sourceRoot":"","sources":["../src/resolve-loader.mjs"],"names":[],"mappings":"AAgCA,wBAAsB,OAAO,CAAC,SAAS,KAAA,EAAE,OAAO,KAAA,EAAE,WAAW,KAAA,gBA8D5D;AAED,wBAAsB,IAAI,CAAC,GAAG,KAAA,EAAE,OAAO,KAAA,EAAE,QAAQ,KAAA,gBA0BhD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-loader.mjs","sourceRoot":"","sources":["../src/resolve-loader.mjs"],"names":[],"mappings":"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"}
|
package/dist/runAnalysis.d.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import type { CoverageManifest, CoverageRunIntegrity, McdcRawTestResult, McdcReport } from "./types.ts";
|
|
2
|
-
/**
|
|
3
|
-
* Keep only the successful final attempt of ultimately passing tests. Status
|
|
4
|
-
* records and coverage records are separate for some runners, so eligibility
|
|
5
|
-
* is resolved per (stable test ID, retry) before evidence is filtered.
|
|
6
|
-
*/
|
|
7
|
-
export declare function passingCoverageResults(rawResults: McdcRawTestResult[]): McdcRawTestResult[];
|
|
8
|
-
/** Coverage executed by attempts whose actual runner status is failed. */
|
|
9
|
-
export declare function failedCoverageResults(rawResults: McdcRawTestResult[]): McdcRawTestResult[];
|
|
10
|
-
export interface AnalyzeCoverageOptions {
|
|
11
|
-
runId: string;
|
|
12
|
-
testExitCode?: number | null;
|
|
13
|
-
integrity?: CoverageRunIntegrity;
|
|
14
|
-
generatedAt?: string;
|
|
15
|
-
}
|
|
16
|
-
export declare function analyzeCoverageResults(manifest: CoverageManifest, rawResults: McdcRawTestResult[], options: AnalyzeCoverageOptions): McdcReport;
|
|
17
|
-
/** Reconstruct every derived coverage view directly from one immutable run. */
|
|
18
|
-
export declare function analyzeCoverageArchive(archivePath: string, options: AnalyzeCoverageOptions): McdcReport;
|
|
19
|
-
//# sourceMappingURL=runAnalysis.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runAnalysis.d.ts","sourceRoot":"","sources":["../src/runAnalysis.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gBAAgB,EAChB,oBAAoB,EAEpB,iBAAiB,EACjB,UAAU,EACX,MAAM,YAAY,CAAC;AAMpB;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,iBAAiB,EAAE,GAC9B,iBAAiB,EAAE,CA4BrB;AAED,0EAA0E;AAC1E,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,iBAAiB,EAAE,GAC9B,iBAAiB,EAAE,CASrB;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,gBAAgB,EAC1B,UAAU,EAAE,iBAAiB,EAAE,EAC/B,OAAO,EAAE,sBAAsB,GAC9B,UAAU,CAgCZ;AAsCD,+EAA+E;AAC/E,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,sBAAsB,GAC9B,UAAU,CA6EZ"}
|
package/dist/runAnalysis.js
DELETED
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
import { createMcdcReport } from "./analyze.js";
|
|
2
|
-
import { readEvidenceArchive } from "./evidenceArchive.js";
|
|
3
|
-
function rawTestId(raw) {
|
|
4
|
-
return raw.testId ?? raw.test;
|
|
5
|
-
}
|
|
6
|
-
/**
|
|
7
|
-
* Keep only the successful final attempt of ultimately passing tests. Status
|
|
8
|
-
* records and coverage records are separate for some runners, so eligibility
|
|
9
|
-
* is resolved per (stable test ID, retry) before evidence is filtered.
|
|
10
|
-
*/
|
|
11
|
-
export function passingCoverageResults(rawResults) {
|
|
12
|
-
const attemptsByTest = new Map();
|
|
13
|
-
for (const raw of rawResults) {
|
|
14
|
-
const retry = raw.retry ?? 0;
|
|
15
|
-
const attempts = attemptsByTest.get(rawTestId(raw)) ?? new Map();
|
|
16
|
-
const attempt = attempts.get(retry) ?? {
|
|
17
|
-
statuses: new Set(),
|
|
18
|
-
expectsFailure: false,
|
|
19
|
-
};
|
|
20
|
-
if (raw.status)
|
|
21
|
-
attempt.statuses.add(raw.status);
|
|
22
|
-
attempt.expectsFailure ||= raw.expectedStatus === "failed";
|
|
23
|
-
attempts.set(retry, attempt);
|
|
24
|
-
attemptsByTest.set(rawTestId(raw), attempts);
|
|
25
|
-
}
|
|
26
|
-
const accepted = new Set();
|
|
27
|
-
for (const [testId, attempts] of attemptsByTest) {
|
|
28
|
-
const retry = Math.max(...attempts.keys());
|
|
29
|
-
const terminal = attempts.get(retry);
|
|
30
|
-
if (terminal.statuses.has("passed") && !terminal.expectsFailure)
|
|
31
|
-
accepted.add(`${testId}\0${retry}`);
|
|
32
|
-
}
|
|
33
|
-
return rawResults.filter((raw) => accepted.has(`${rawTestId(raw)}\0${raw.retry ?? 0}`));
|
|
34
|
-
}
|
|
35
|
-
/** Coverage executed by attempts whose actual runner status is failed. */
|
|
36
|
-
export function failedCoverageResults(rawResults) {
|
|
37
|
-
const failedAttempts = new Set(rawResults
|
|
38
|
-
.filter((raw) => raw.status === "failed")
|
|
39
|
-
.map((raw) => `${rawTestId(raw)}\0${raw.retry ?? 0}`));
|
|
40
|
-
return rawResults.filter((raw) => failedAttempts.has(`${rawTestId(raw)}\0${raw.retry ?? 0}`));
|
|
41
|
-
}
|
|
42
|
-
export function analyzeCoverageResults(manifest, rawResults, options) {
|
|
43
|
-
const incompatibleScope = rawResults.find((raw) => raw.scope && raw.scope.runId !== options.runId);
|
|
44
|
-
if (incompatibleScope) {
|
|
45
|
-
throw new Error(`Coverage evidence for run ${incompatibleScope.scope.runId} cannot be used in run ${options.runId}`);
|
|
46
|
-
}
|
|
47
|
-
if (rawResults.length === 0)
|
|
48
|
-
throw new Error(`No coverage evidence was collected for run ${options.runId}`);
|
|
49
|
-
const report = createMcdcReport(manifest, rawResults);
|
|
50
|
-
const passed = createMcdcReport(manifest, passingCoverageResults(rawResults));
|
|
51
|
-
const failed = createMcdcReport(manifest, failedCoverageResults(rawResults));
|
|
52
|
-
if (options.generatedAt) {
|
|
53
|
-
report.generatedAt = options.generatedAt;
|
|
54
|
-
passed.generatedAt = options.generatedAt;
|
|
55
|
-
failed.generatedAt = options.generatedAt;
|
|
56
|
-
}
|
|
57
|
-
report.filters = { passed, failed };
|
|
58
|
-
if (options.integrity) {
|
|
59
|
-
report.integrity = options.integrity;
|
|
60
|
-
passed.integrity = options.integrity;
|
|
61
|
-
failed.integrity = options.integrity;
|
|
62
|
-
}
|
|
63
|
-
if (options.testExitCode !== undefined)
|
|
64
|
-
report.execution = {
|
|
65
|
-
testExitCode: options.testExitCode,
|
|
66
|
-
valid: options.testExitCode === 0,
|
|
67
|
-
};
|
|
68
|
-
return report;
|
|
69
|
-
}
|
|
70
|
-
function parseJson(contents, source) {
|
|
71
|
-
try {
|
|
72
|
-
return JSON.parse(contents);
|
|
73
|
-
}
|
|
74
|
-
catch (error) {
|
|
75
|
-
throw new Error(`Invalid JSON in ${source}: ${String(error)}`);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
function parseJsonLines(entries) {
|
|
79
|
-
const records = [];
|
|
80
|
-
let corruptRecords = 0;
|
|
81
|
-
const corruptFiles = new Set();
|
|
82
|
-
for (const entry of entries) {
|
|
83
|
-
for (const line of entry.contents.split("\n")) {
|
|
84
|
-
if (!line)
|
|
85
|
-
continue;
|
|
86
|
-
try {
|
|
87
|
-
records.push(JSON.parse(line));
|
|
88
|
-
}
|
|
89
|
-
catch {
|
|
90
|
-
corruptRecords += 1;
|
|
91
|
-
corruptFiles.add(entry.path);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
return {
|
|
96
|
-
records,
|
|
97
|
-
corruptRecords,
|
|
98
|
-
corruptFiles: corruptFiles.size,
|
|
99
|
-
};
|
|
100
|
-
}
|
|
101
|
-
/** Reconstruct every derived coverage view directly from one immutable run. */
|
|
102
|
-
export function analyzeCoverageArchive(archivePath, options) {
|
|
103
|
-
const archive = readEvidenceArchive(archivePath);
|
|
104
|
-
const manifestEntry = archive.files.find((entry) => entry.path === "manifest.json");
|
|
105
|
-
if (!manifestEntry)
|
|
106
|
-
throw new Error(`Coverage manifest is missing from ${archivePath}`);
|
|
107
|
-
const manifest = parseJson(manifestEntry.contents, "manifest.json");
|
|
108
|
-
const rawResults = archive.files
|
|
109
|
-
.filter((entry) => /(?:^|\/)mcdc\.json$/.test(entry.path))
|
|
110
|
-
.map((entry) => parseJson(entry.contents, entry.path));
|
|
111
|
-
const scopedEvidence = parseJsonLines(archive.files.filter((entry) => /^server\/.*\/server\.jsonl$/.test(entry.path)));
|
|
112
|
-
const scopedRecords = scopedEvidence.records;
|
|
113
|
-
for (const record of scopedRecords) {
|
|
114
|
-
if (!record.scope)
|
|
115
|
-
continue;
|
|
116
|
-
const matching = rawResults.find((raw) => rawTestId(raw) === record.scope.testId &&
|
|
117
|
-
(raw.retry ?? 0) === record.scope.retry);
|
|
118
|
-
if (!matching)
|
|
119
|
-
continue;
|
|
120
|
-
const serialized = JSON.stringify(record);
|
|
121
|
-
matching.server ??= [];
|
|
122
|
-
if (!matching.server.some((candidate) => JSON.stringify(candidate) === serialized))
|
|
123
|
-
matching.server.push(record);
|
|
124
|
-
}
|
|
125
|
-
const backgroundEvidence = parseJsonLines(archive.files.filter((entry) => /^server\/background\/.*\.jsonl$/.test(entry.path)));
|
|
126
|
-
const backgroundRecords = backgroundEvidence.records;
|
|
127
|
-
if (backgroundRecords.length > 0) {
|
|
128
|
-
rawResults.push({
|
|
129
|
-
testId: `background:${options.runId}`,
|
|
130
|
-
test: "Background / unattributed",
|
|
131
|
-
title: "Background / unattributed",
|
|
132
|
-
status: "unknown",
|
|
133
|
-
provenance: {
|
|
134
|
-
runner: "background",
|
|
135
|
-
kind: "background",
|
|
136
|
-
source: "explicit",
|
|
137
|
-
},
|
|
138
|
-
role: "background",
|
|
139
|
-
browser: [],
|
|
140
|
-
server: backgroundRecords,
|
|
141
|
-
});
|
|
142
|
-
}
|
|
143
|
-
const executionEvidence = parseJsonLines(archive.files.filter((entry) => /^execution\..*\.jsonl$/.test(entry.path)));
|
|
144
|
-
const executionEvents = executionEvidence.records;
|
|
145
|
-
const corruptRecords = scopedEvidence.corruptRecords +
|
|
146
|
-
backgroundEvidence.corruptRecords +
|
|
147
|
-
executionEvidence.corruptRecords;
|
|
148
|
-
const corruptFiles = scopedEvidence.corruptFiles +
|
|
149
|
-
backgroundEvidence.corruptFiles +
|
|
150
|
-
executionEvidence.corruptFiles;
|
|
151
|
-
const transport = {
|
|
152
|
-
processes: executionEvents.filter((event) => event.event === "process").length,
|
|
153
|
-
childLaunches: executionEvents.filter((event) => event.event === "child-launch").length,
|
|
154
|
-
remoteLaunches: executionEvents.filter((event) => event.event === "remote-launch").length,
|
|
155
|
-
workspaceCapabilities: executionEvents.filter((event) => event.event === "workspace-capability").length,
|
|
156
|
-
scopedServerRecords: scopedRecords.length,
|
|
157
|
-
backgroundServerRecords: backgroundRecords.length,
|
|
158
|
-
corruptRecords,
|
|
159
|
-
corruptFiles,
|
|
160
|
-
};
|
|
161
|
-
const report = analyzeCoverageResults(manifest, rawResults, options);
|
|
162
|
-
report.transport = transport;
|
|
163
|
-
if (report.filters) {
|
|
164
|
-
report.filters.passed.transport = transport;
|
|
165
|
-
report.filters.failed.transport = transport;
|
|
166
|
-
}
|
|
167
|
-
return report;
|
|
168
|
-
}
|
|
169
|
-
//# sourceMappingURL=runAnalysis.js.map
|
package/dist/runAnalysis.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runAnalysis.js","sourceRoot":"","sources":["../src/runAnalysis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAS3D,SAAS,SAAS,CAAC,GAAsB;IACvC,OAAO,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC;AAChC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,UAA+B;IAE/B,MAAM,cAAc,GAAG,IAAI,GAAG,EAG3B,CAAC;IACJ,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC;QAC7B,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;QACjE,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI;YACrC,QAAQ,EAAE,IAAI,GAAG,EAAU;YAC3B,cAAc,EAAE,KAAK;SACtB,CAAC;QACF,IAAI,GAAG,CAAC,MAAM;YAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjD,OAAO,CAAC,cAAc,KAAK,GAAG,CAAC,cAAc,KAAK,QAAQ,CAAC;QAC3D,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC7B,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,KAAK,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,cAAc,EAAE,CAAC;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC;QACtC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc;YAC7D,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,KAAK,KAAK,EAAE,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAC/B,QAAQ,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CACrD,CAAC;AACJ,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,qBAAqB,CACnC,UAA+B;IAE/B,MAAM,cAAc,GAAG,IAAI,GAAG,CAC5B,UAAU;SACP,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC;SACxC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CACxD,CAAC;IACF,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAC/B,cAAc,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAC3D,CAAC;AACJ,CAAC;AASD,MAAM,UAAU,sBAAsB,CACpC,QAA0B,EAC1B,UAA+B,EAC/B,OAA+B;IAE/B,MAAM,iBAAiB,GAAG,UAAU,CAAC,IAAI,CACvC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CACxD,CAAC;IACF,IAAI,iBAAiB,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,6BAA6B,iBAAiB,CAAC,KAAM,CAAC,KAAK,0BAA0B,OAAO,CAAC,KAAK,EAAE,CACrG,CAAC;IACJ,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,8CAA8C,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAEjF,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,EAAE,sBAAsB,CAAC,UAAU,CAAC,CAAC,CAAC;IAC9E,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,EAAE,qBAAqB,CAAC,UAAU,CAAC,CAAC,CAAC;IAC7E,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACzC,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACzC,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAC3C,CAAC;IACD,MAAM,CAAC,OAAO,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACpC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACrC,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACrC,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACvC,CAAC;IACD,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS;QACpC,MAAM,CAAC,SAAS,GAAG;YACjB,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,KAAK,EAAE,OAAO,CAAC,YAAY,KAAK,CAAC;SAClC,CAAC;IACJ,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,SAAS,CAAI,QAAgB,EAAE,MAAc;IACpD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAM,CAAC;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CACrB,OAAkD;IAMlD,MAAM,OAAO,GAAQ,EAAE,CAAC;IACxB,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAC,CAAC;YACtC,CAAC;YAAC,MAAM,CAAC;gBACP,cAAc,IAAI,CAAC,CAAC;gBACpB,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO;QACL,OAAO;QACP,cAAc;QACd,YAAY,EAAE,YAAY,CAAC,IAAI;KAChC,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,sBAAsB,CACpC,WAAmB,EACnB,OAA+B;IAE/B,MAAM,OAAO,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;IACjD,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC;IACpF,IAAI,CAAC,aAAa;QAChB,MAAM,IAAI,KAAK,CAAC,qCAAqC,WAAW,EAAE,CAAC,CAAC;IACtE,MAAM,QAAQ,GAAG,SAAS,CAAmB,aAAa,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IACtF,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK;SAC7B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SACzD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,CAAoB,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5E,MAAM,cAAc,GAAG,cAAc,CACnC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAChF,CAAC;IACF,MAAM,aAAa,GAAG,cAAc,CAAC,OAAO,CAAC;IAC7C,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,KAAK;YAAE,SAAS;QAC5B,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAC9B,CAAC,GAAG,EAAE,EAAE,CACN,SAAS,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,KAAM,CAAC,MAAM;YACvC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,KAAM,CAAC,KAAK,CAC3C,CAAC;QACF,IAAI,CAAC,QAAQ;YAAE,SAAS;QACxB,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC1C,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC;YAChF,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IACD,MAAM,kBAAkB,GAAG,cAAc,CACvC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,iCAAiC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CACpF,CAAC;IACF,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,OAAO,CAAC;IACrD,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,UAAU,CAAC,IAAI,CAAC;YACd,MAAM,EAAE,cAAc,OAAO,CAAC,KAAK,EAAE;YACrC,IAAI,EAAE,2BAA2B;YACjC,KAAK,EAAE,2BAA2B;YAClC,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE;gBACV,MAAM,EAAE,YAAY;gBACpB,IAAI,EAAE,YAAY;gBAClB,MAAM,EAAE,UAAU;aACnB;YACD,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,EAAE;YACX,MAAM,EAAE,iBAAiB;SAC1B,CAAC,CAAC;IACL,CAAC;IACD,MAAM,iBAAiB,GAAG,cAAc,CACtC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAC3E,CAAC;IACF,MAAM,eAAe,GAAG,iBAAiB,CAAC,OAAO,CAAC;IAClD,MAAM,cAAc,GAClB,cAAc,CAAC,cAAc;QAC7B,kBAAkB,CAAC,cAAc;QACjC,iBAAiB,CAAC,cAAc,CAAC;IACnC,MAAM,YAAY,GAChB,cAAc,CAAC,YAAY;QAC3B,kBAAkB,CAAC,YAAY;QAC/B,iBAAiB,CAAC,YAAY,CAAC;IACjC,MAAM,SAAS,GAAG;QAChB,SAAS,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,MAAM;QAC9E,aAAa,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,cAAc,CAAC,CAAC,MAAM;QACvF,cAAc,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,eAAe,CAAC,CAAC,MAAM;QACzF,qBAAqB,EAAE,eAAe,CAAC,MAAM,CAC3C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,sBAAsB,CAClD,CAAC,MAAM;QACR,mBAAmB,EAAE,aAAa,CAAC,MAAM;QACzC,uBAAuB,EAAE,iBAAiB,CAAC,MAAM;QACjD,cAAc;QACd,YAAY;KACb,CAAC;IACF,MAAM,MAAM,GAAG,sBAAsB,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IACrE,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;QAC5C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;IAC9C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/runnerEvidence.d.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import type { CoverageExecutionScope, CoveragePhase, CoverageServerRecord, TestAttemptStatus } from "./types.ts";
|
|
2
|
-
export interface RunnerTestIdentity {
|
|
3
|
-
runner: string;
|
|
4
|
-
name: string;
|
|
5
|
-
file?: string;
|
|
6
|
-
line?: number;
|
|
7
|
-
column?: number;
|
|
8
|
-
retry?: number;
|
|
9
|
-
}
|
|
10
|
-
export declare function runnerTestId(identity: RunnerTestIdentity): string;
|
|
11
|
-
export declare function runnerExecutionScope(identity: RunnerTestIdentity): CoverageExecutionScope;
|
|
12
|
-
export declare function callerLocation(ignored: RegExp): {
|
|
13
|
-
file?: string;
|
|
14
|
-
line?: number;
|
|
15
|
-
column?: number;
|
|
16
|
-
};
|
|
17
|
-
export declare function readScopedServerEvidence(scope: CoverageExecutionScope): CoverageServerRecord[];
|
|
18
|
-
export declare function writeRunnerEvidence(identity: RunnerTestIdentity, status: TestAttemptStatus, scope: CoverageExecutionScope, evidenceDirectoryOverride?: string, phases?: CoveragePhase[]): void;
|
|
19
|
-
//# sourceMappingURL=runnerEvidence.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runnerEvidence.d.ts","sourceRoot":"","sources":["../src/runnerEvidence.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,sBAAsB,EACtB,aAAa,EACb,oBAAoB,EAEpB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAQD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,CASjE;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,kBAAkB,GAC3B,sBAAsB,CAcxB;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAaA;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,sBAAsB,GAC5B,oBAAoB,EAAE,CAUxB;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,kBAAkB,EAC5B,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,sBAAsB,EAC7B,yBAAyB,CAAC,EAAE,MAAM,EAClC,MAAM,GAAE,aAAa,EAAO,GAC3B,IAAI,CA8BN"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runnerEvidence.js","sourceRoot":"","sources":["../src/runnerEvidence.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime.d.ts
DELETED
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import type { CoverageCarrier, CoverageExecutionScope, CoveragePhase, CoverageRuntimeSnapshot, McdcDecisionMeta } from "./types.ts";
|
|
2
|
-
interface DecisionFrame {
|
|
3
|
-
meta: McdcDecisionMeta;
|
|
4
|
-
values: Array<boolean | null>;
|
|
5
|
-
}
|
|
6
|
-
interface SelectionFrame {
|
|
7
|
-
shortId: string;
|
|
8
|
-
rightId: string;
|
|
9
|
-
rightEvaluated: boolean;
|
|
10
|
-
}
|
|
11
|
-
interface OptionalCallFrame {
|
|
12
|
-
shortId: string;
|
|
13
|
-
continuedId: string;
|
|
14
|
-
reached: boolean;
|
|
15
|
-
continued: boolean;
|
|
16
|
-
}
|
|
17
|
-
interface TryFrame {
|
|
18
|
-
successId: string;
|
|
19
|
-
catchId: string;
|
|
20
|
-
caught: boolean;
|
|
21
|
-
}
|
|
22
|
-
interface LoopFrame {
|
|
23
|
-
zeroId: string;
|
|
24
|
-
enteredId: string;
|
|
25
|
-
entered: boolean;
|
|
26
|
-
}
|
|
27
|
-
interface FsBuiltin {
|
|
28
|
-
appendFileSync(path: string, data: string): void;
|
|
29
|
-
mkdirSync(path: string, options: {
|
|
30
|
-
recursive: boolean;
|
|
31
|
-
}): void;
|
|
32
|
-
writeFileSync(path: string, data: string, options: {
|
|
33
|
-
flag: "wx";
|
|
34
|
-
}): void;
|
|
35
|
-
}
|
|
36
|
-
export declare function coverageSnapshot(): CoverageRuntimeSnapshot;
|
|
37
|
-
export declare function resetCoverage(testId?: string): void;
|
|
38
|
-
/** Buffer and de-duplicate local Node evidence until its test attempt ends. */
|
|
39
|
-
export declare function beginBufferedServerEvidence(scope: CoverageExecutionScope): void;
|
|
40
|
-
/** Publish one local test attempt with one filesystem append. */
|
|
41
|
-
export declare function flushBufferedServerEvidence(scope: CoverageExecutionScope): void;
|
|
42
|
-
/** A local runner will persist coverageSnapshot(), so avoid duplicate files. */
|
|
43
|
-
export declare function enableRuntimeSnapshotEvidence(): void;
|
|
44
|
-
/**
|
|
45
|
-
* Claim one immutable background record. Starting from the same sequence is
|
|
46
|
-
* intentional: a snapshotted process can be cloned with identical pid,
|
|
47
|
-
* environment and memory. O_EXCL makes the shared filesystem the allocator.
|
|
48
|
-
*/
|
|
49
|
-
export declare function writeExclusiveBackgroundRecord(fs: Pick<FsBuiltin, "writeFileSync">, runId: string, writer: string, initialSequence: number, payload: string): number;
|
|
50
|
-
export declare function coverageCarrier(): CoverageCarrier;
|
|
51
|
-
export declare function withCoverageCarrier<T>(carrier: CoverageCarrier | string | undefined, callback: () => T): T;
|
|
52
|
-
/**
|
|
53
|
-
* Execute an assertion and its argument evaluation under one explicit phase.
|
|
54
|
-
* The source transformer supplies the thunk so JavaScript does not evaluate
|
|
55
|
-
* assertion arguments before the phase exists. Builtin wrappers also call
|
|
56
|
-
* this as a fallback for dynamic assertion references.
|
|
57
|
-
*/
|
|
58
|
-
export declare function withNodeAssertionPhase<T>(operation: string, source: string | undefined, callback: () => T): T;
|
|
59
|
-
/** Consume the assertion phases recorded for one exact runner attempt. */
|
|
60
|
-
export declare function takeNodeAssertionPhases(scope: CoverageExecutionScope): CoveragePhase[];
|
|
61
|
-
export declare function bindCoverageContext<T extends (...args: never[]) => unknown>(callback: T, carrier?: CoverageCarrier): T;
|
|
62
|
-
export declare function coverageContextHeaders(): Record<string, string>;
|
|
63
|
-
export declare function coverageContextEnvironment(): Record<string, string>;
|
|
64
|
-
export declare function withRequestPhase<T extends (...args: never[]) => unknown>(handler: T): T;
|
|
65
|
-
export declare function coverageHit(id: string): void;
|
|
66
|
-
export declare function selectionBegin(shortId: string, rightId: string): SelectionFrame;
|
|
67
|
-
export declare function selectionRight<T>(frame: SelectionFrame, value: T, inferredName?: string): T;
|
|
68
|
-
export declare function selectionEnd<T>(frame: SelectionFrame, value: T): T;
|
|
69
|
-
export declare function optionalSelect<T>(shortId: string, continuedId: string, value: T): T;
|
|
70
|
-
export declare function optionalCallBegin(shortId: string, continuedId: string): OptionalCallFrame;
|
|
71
|
-
/** Mark callee-reference evaluation while returning its operand unchanged. */
|
|
72
|
-
export declare function optionalCallReached<T>(frame: OptionalCallFrame, value: T): T;
|
|
73
|
-
/** Native optional calls evaluate argument spreads only on continuation. */
|
|
74
|
-
export declare function optionalCallContinued(frame: OptionalCallFrame): Iterable<never>;
|
|
75
|
-
export declare function optionalCallEnd<T>(frame: OptionalCallFrame, value: T): T;
|
|
76
|
-
export declare function defaultSelected<T>(defaultId: string, value: T, inferredName?: string): T;
|
|
77
|
-
export declare function defaultEntered(defaultId: string, providedId: string): void;
|
|
78
|
-
export declare function tryBegin(successId: string, catchId: string): TryFrame;
|
|
79
|
-
export declare function tryCatch<T>(frame: TryFrame, value: T): T;
|
|
80
|
-
export declare function tryEnd(frame: TryFrame): void;
|
|
81
|
-
export declare function loopBegin(zeroId: string, enteredId: string): LoopFrame;
|
|
82
|
-
export declare function loopEntered(frame: LoopFrame): void;
|
|
83
|
-
export declare function loopEnd(frame: LoopFrame): void;
|
|
84
|
-
export declare function mcdcBegin(id: string, meta: McdcDecisionMeta): DecisionFrame;
|
|
85
|
-
export declare function mcdcCondition<T>(frame: DecisionFrame, index: number, value: T): T;
|
|
86
|
-
export declare function mcdcEnd<T>(frame: DecisionFrame, value: T): T;
|
|
87
|
-
export {};
|
|
88
|
-
//# sourceMappingURL=runtime.d.ts.map
|