supercov 0.0.11 → 0.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/README.md +28 -23
  2. package/bin/supercov.js +8 -19
  3. package/package.json +31 -43
  4. package/{dist → runtime/javascript}/atomic.js +0 -1
  5. package/{dist → runtime/javascript}/launchSupervisor.js +45 -2
  6. package/{dist → runtime/javascript}/nodeAssert.js +0 -1
  7. package/{dist → runtime/javascript}/nodeAssertAdapter.js +0 -1
  8. package/{dist → runtime/javascript}/nodeAssertStrict.js +0 -1
  9. package/{dist → runtime/javascript}/nodeTest.js +0 -1
  10. package/{dist → runtime/javascript}/playwright.js +0 -1
  11. package/{dist → runtime/javascript}/playwrightReporter.js +0 -1
  12. package/{dist → runtime/javascript}/provenance.js +0 -1
  13. package/{dist → runtime/javascript}/register.mjs +3 -2
  14. package/{dist → runtime/javascript}/resolve-loader.mjs +0 -42
  15. package/{dist → runtime/javascript}/runnerEvidence.js +0 -1
  16. package/{dist → runtime/javascript}/transport.js +0 -1
  17. package/{dist → runtime/javascript}/vitest.js +0 -1
  18. package/{dist → runtime/javascript}/vitestReporter.js +0 -1
  19. package/dist/agentJson.d.ts +0 -45
  20. package/dist/agentJson.d.ts.map +0 -1
  21. package/dist/agentJson.js +0 -102
  22. package/dist/agentJson.js.map +0 -1
  23. package/dist/analyze.d.ts +0 -12
  24. package/dist/analyze.d.ts.map +0 -1
  25. package/dist/analyze.js +0 -704
  26. package/dist/analyze.js.map +0 -1
  27. package/dist/atomic.d.ts +0 -6
  28. package/dist/atomic.d.ts.map +0 -1
  29. package/dist/atomic.js.map +0 -1
  30. package/dist/buildCache.d.ts +0 -14
  31. package/dist/buildCache.d.ts.map +0 -1
  32. package/dist/buildCache.js +0 -84
  33. package/dist/buildCache.js.map +0 -1
  34. package/dist/cli.d.ts +0 -2
  35. package/dist/cli.d.ts.map +0 -1
  36. package/dist/cli.js +0 -797
  37. package/dist/cli.js.map +0 -1
  38. package/dist/directInstrumenter.d.ts +0 -8
  39. package/dist/directInstrumenter.d.ts.map +0 -1
  40. package/dist/directInstrumenter.js +0 -112
  41. package/dist/directInstrumenter.js.map +0 -1
  42. package/dist/engineEvidence.d.ts +0 -9
  43. package/dist/engineEvidence.d.ts.map +0 -1
  44. package/dist/engineEvidence.js +0 -31
  45. package/dist/engineEvidence.js.map +0 -1
  46. package/dist/engineInstrumenter.d.ts +0 -16
  47. package/dist/engineInstrumenter.d.ts.map +0 -1
  48. package/dist/engineInstrumenter.js +0 -50
  49. package/dist/engineInstrumenter.js.map +0 -1
  50. package/dist/engineProcess.d.ts +0 -11
  51. package/dist/engineProcess.d.ts.map +0 -1
  52. package/dist/engineProcess.js +0 -59
  53. package/dist/engineProcess.js.map +0 -1
  54. package/dist/esmInterceptor.d.ts +0 -6
  55. package/dist/esmInterceptor.d.ts.map +0 -1
  56. package/dist/esmInterceptor.js +0 -63
  57. package/dist/esmInterceptor.js.map +0 -1
  58. package/dist/evidenceArchive.d.ts +0 -38
  59. package/dist/evidenceArchive.d.ts.map +0 -1
  60. package/dist/evidenceArchive.js +0 -156
  61. package/dist/evidenceArchive.js.map +0 -1
  62. package/dist/instrumenter.d.ts +0 -18
  63. package/dist/instrumenter.d.ts.map +0 -1
  64. package/dist/instrumenter.js +0 -1644
  65. package/dist/instrumenter.js.map +0 -1
  66. package/dist/integrity.d.ts +0 -10
  67. package/dist/integrity.d.ts.map +0 -1
  68. package/dist/integrity.js +0 -213
  69. package/dist/integrity.js.map +0 -1
  70. package/dist/launchSupervisor.d.ts +0 -38
  71. package/dist/launchSupervisor.d.ts.map +0 -1
  72. package/dist/launchSupervisor.js.map +0 -1
  73. package/dist/merge.d.ts +0 -2
  74. package/dist/merge.d.ts.map +0 -1
  75. package/dist/merge.js +0 -119
  76. package/dist/merge.js.map +0 -1
  77. package/dist/nodeAssert.d.ts +0 -31
  78. package/dist/nodeAssert.d.ts.map +0 -1
  79. package/dist/nodeAssert.js.map +0 -1
  80. package/dist/nodeAssertAdapter.d.ts +0 -6
  81. package/dist/nodeAssertAdapter.d.ts.map +0 -1
  82. package/dist/nodeAssertAdapter.js.map +0 -1
  83. package/dist/nodeAssertStrict.d.ts +0 -31
  84. package/dist/nodeAssertStrict.d.ts.map +0 -1
  85. package/dist/nodeAssertStrict.js.map +0 -1
  86. package/dist/nodeAssertionInstrumenter.d.ts +0 -8
  87. package/dist/nodeAssertionInstrumenter.d.ts.map +0 -1
  88. package/dist/nodeAssertionInstrumenter.js +0 -271
  89. package/dist/nodeAssertionInstrumenter.js.map +0 -1
  90. package/dist/nodeTest.d.ts +0 -15
  91. package/dist/nodeTest.d.ts.map +0 -1
  92. package/dist/nodeTest.js.map +0 -1
  93. package/dist/playwright.d.ts +0 -9
  94. package/dist/playwright.d.ts.map +0 -1
  95. package/dist/playwright.js.map +0 -1
  96. package/dist/playwrightReporter.d.ts +0 -6
  97. package/dist/playwrightReporter.d.ts.map +0 -1
  98. package/dist/playwrightReporter.js.map +0 -1
  99. package/dist/processDiagnostics.d.ts +0 -34
  100. package/dist/processDiagnostics.d.ts.map +0 -1
  101. package/dist/processDiagnostics.js +0 -155
  102. package/dist/processDiagnostics.js.map +0 -1
  103. package/dist/project.d.ts +0 -21
  104. package/dist/project.d.ts.map +0 -1
  105. package/dist/project.js +0 -331
  106. package/dist/project.js.map +0 -1
  107. package/dist/provenance.d.ts +0 -9
  108. package/dist/provenance.d.ts.map +0 -1
  109. package/dist/provenance.js.map +0 -1
  110. package/dist/query.d.ts +0 -81
  111. package/dist/query.d.ts.map +0 -1
  112. package/dist/query.js +0 -1656
  113. package/dist/query.js.map +0 -1
  114. package/dist/queryCache.d.ts +0 -15
  115. package/dist/queryCache.d.ts.map +0 -1
  116. package/dist/queryCache.js +0 -95
  117. package/dist/queryCache.js.map +0 -1
  118. package/dist/queueAdapters.d.ts +0 -15
  119. package/dist/queueAdapters.d.ts.map +0 -1
  120. package/dist/queueAdapters.js +0 -55
  121. package/dist/queueAdapters.js.map +0 -1
  122. package/dist/register.d.mts +0 -2
  123. package/dist/register.d.mts.map +0 -1
  124. package/dist/register.mjs.map +0 -1
  125. package/dist/reporter.d.ts +0 -13
  126. package/dist/reporter.d.ts.map +0 -1
  127. package/dist/reporter.js +0 -252
  128. package/dist/reporter.js.map +0 -1
  129. package/dist/resolve-loader.d.mts +0 -3
  130. package/dist/resolve-loader.d.mts.map +0 -1
  131. package/dist/resolve-loader.mjs.map +0 -1
  132. package/dist/runAnalysis.d.ts +0 -19
  133. package/dist/runAnalysis.d.ts.map +0 -1
  134. package/dist/runAnalysis.js +0 -171
  135. package/dist/runAnalysis.js.map +0 -1
  136. package/dist/runnerEvidence.d.ts +0 -19
  137. package/dist/runnerEvidence.d.ts.map +0 -1
  138. package/dist/runnerEvidence.js.map +0 -1
  139. package/dist/runtime.d.ts +0 -140
  140. package/dist/runtime.d.ts.map +0 -1
  141. package/dist/runtime.js.map +0 -1
  142. package/dist/runtimeIsolation.d.ts +0 -3
  143. package/dist/runtimeIsolation.d.ts.map +0 -1
  144. package/dist/runtimeIsolation.js +0 -9
  145. package/dist/runtimeIsolation.js.map +0 -1
  146. package/dist/sourceDiscovery.d.ts +0 -9
  147. package/dist/sourceDiscovery.d.ts.map +0 -1
  148. package/dist/sourceDiscovery.js +0 -242
  149. package/dist/sourceDiscovery.js.map +0 -1
  150. package/dist/transport.d.ts +0 -17
  151. package/dist/transport.d.ts.map +0 -1
  152. package/dist/transport.js.map +0 -1
  153. package/dist/types.d.ts +0 -378
  154. package/dist/types.d.ts.map +0 -1
  155. package/dist/types.js +0 -2
  156. package/dist/types.js.map +0 -1
  157. package/dist/vitePlugin.d.ts +0 -13
  158. package/dist/vitePlugin.d.ts.map +0 -1
  159. package/dist/vitePlugin.js +0 -139
  160. package/dist/vitePlugin.js.map +0 -1
  161. package/dist/vitest.d.ts +0 -2
  162. package/dist/vitest.d.ts.map +0 -1
  163. package/dist/vitest.js.map +0 -1
  164. package/dist/vitestReporter.d.ts +0 -43
  165. package/dist/vitestReporter.d.ts.map +0 -1
  166. package/dist/vitestReporter.js.map +0 -1
  167. package/dist/waivers.d.ts +0 -52
  168. package/dist/waivers.d.ts.map +0 -1
  169. package/dist/waivers.js +0 -121
  170. package/dist/waivers.js.map +0 -1
  171. package/dist/workspace.d.ts +0 -117
  172. package/dist/workspace.d.ts.map +0 -1
  173. package/dist/workspace.js +0 -680
  174. package/dist/workspace.js.map +0 -1
  175. /package/{dist → runtime/javascript}/runtime.js +0 -0
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("<", "&lt;")
62
- .replaceAll(">", "&gt;")
63
- .replaceAll('"', "&quot;");
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"reporter.js","sourceRoot":"","sources":["../src/reporter.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- export declare function resolve(specifier: any, context: any, nextResolve: any): Promise<any>;
2
- export declare function load(url: any, context: any, nextLoad: any): Promise<any>;
3
- //# sourceMappingURL=resolve-loader.d.mts.map
@@ -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,gBAgChD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolve-loader.mjs","sourceRoot":"","sources":["../src/resolve-loader.mjs"],"names":[],"mappings":"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"}
@@ -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,CAkFZ"}
@@ -1,171 +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) => entry.path.startsWith("server/") &&
112
- !entry.path.startsWith("server/background/") &&
113
- entry.path.endsWith(".jsonl")));
114
- const scopedRecords = scopedEvidence.records;
115
- for (const record of scopedRecords) {
116
- if (!record.scope)
117
- continue;
118
- const matching = rawResults.find((raw) => rawTestId(raw) === record.scope.testId &&
119
- (raw.retry ?? 0) === record.scope.retry);
120
- if (!matching)
121
- continue;
122
- const serialized = JSON.stringify(record);
123
- matching.server ??= [];
124
- if (!matching.server.some((candidate) => JSON.stringify(candidate) === serialized))
125
- matching.server.push(record);
126
- }
127
- const backgroundEvidence = parseJsonLines(archive.files.filter((entry) => /^server\/background\/.*\.jsonl$/.test(entry.path)));
128
- const backgroundRecords = backgroundEvidence.records;
129
- if (backgroundRecords.length > 0) {
130
- rawResults.push({
131
- testId: `background:${options.runId}`,
132
- test: "Background / unattributed",
133
- title: "Background / unattributed",
134
- status: "unknown",
135
- provenance: {
136
- runner: "background",
137
- kind: "background",
138
- source: "explicit",
139
- },
140
- role: "background",
141
- browser: [],
142
- server: backgroundRecords,
143
- });
144
- }
145
- const executionEvidence = parseJsonLines(archive.files.filter((entry) => /^execution\..*\.jsonl$/.test(entry.path)));
146
- const executionEvents = executionEvidence.records;
147
- const corruptRecords = scopedEvidence.corruptRecords +
148
- backgroundEvidence.corruptRecords +
149
- executionEvidence.corruptRecords;
150
- const corruptFiles = scopedEvidence.corruptFiles +
151
- backgroundEvidence.corruptFiles +
152
- executionEvidence.corruptFiles;
153
- const transport = {
154
- processes: executionEvents.filter((event) => event.event === "process").length,
155
- childLaunches: executionEvents.filter((event) => event.event === "child-launch").length,
156
- remoteLaunches: executionEvents.filter((event) => event.event === "remote-launch").length,
157
- workspaceCapabilities: executionEvents.filter((event) => event.event === "workspace-capability").length,
158
- scopedServerRecords: scopedRecords.length,
159
- backgroundServerRecords: backgroundRecords.length,
160
- corruptRecords,
161
- corruptFiles,
162
- };
163
- const report = analyzeCoverageResults(manifest, rawResults, options);
164
- report.transport = transport;
165
- if (report.filters) {
166
- report.filters.passed.transport = transport;
167
- report.filters.failed.transport = transport;
168
- }
169
- return report;
170
- }
171
- //# sourceMappingURL=runAnalysis.js.map
@@ -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,CAClB,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAChC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAChC,CACF,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"}
@@ -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, evidencePath?: string): CoverageServerRecord[];
18
- export declare function writeRunnerEvidence(identity: RunnerTestIdentity, status: TestAttemptStatus, scope: CoverageExecutionScope, evidenceDirectoryOverride?: string, phases?: CoveragePhase[], serverEvidenceSource?: string): 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,EAC7B,YAAY,SAA4B,GACvC,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,EAC5B,oBAAoB,CAAC,EAAE,MAAM,GAC5B,IAAI,CAgCN"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"runnerEvidence.js","sourceRoot":"","sources":["../src/runnerEvidence.ts"],"names":[],"mappings":"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"}