supercov 0.0.3 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +132 -76
- package/dist/analyze.d.ts.map +1 -1
- package/dist/analyze.js +1 -0
- package/dist/analyze.js.map +1 -1
- package/dist/buildCache.d.ts +14 -0
- package/dist/buildCache.d.ts.map +1 -0
- package/dist/buildCache.js +84 -0
- package/dist/buildCache.js.map +1 -0
- package/dist/cli.js +213 -26
- package/dist/cli.js.map +1 -1
- package/dist/directInstrumenter.d.ts +2 -2
- package/dist/directInstrumenter.d.ts.map +1 -1
- package/dist/directInstrumenter.js +18 -20
- package/dist/directInstrumenter.js.map +1 -1
- package/dist/esmInterceptor.d.ts +6 -0
- package/dist/esmInterceptor.d.ts.map +1 -0
- package/dist/esmInterceptor.js +63 -0
- package/dist/esmInterceptor.js.map +1 -0
- package/dist/evidenceArchive.d.ts +37 -0
- package/dist/evidenceArchive.d.ts.map +1 -0
- package/dist/evidenceArchive.js +110 -0
- package/dist/evidenceArchive.js.map +1 -0
- package/dist/instrumenter.d.ts.map +1 -1
- package/dist/instrumenter.js +10 -6
- package/dist/instrumenter.js.map +1 -1
- package/dist/integrity.d.ts.map +1 -1
- package/dist/integrity.js +3 -3
- package/dist/integrity.js.map +1 -1
- package/dist/launchSupervisor.d.ts +6 -0
- package/dist/launchSupervisor.d.ts.map +1 -1
- package/dist/launchSupervisor.js +78 -4
- package/dist/launchSupervisor.js.map +1 -1
- package/dist/merge.d.ts +2 -0
- package/dist/merge.d.ts.map +1 -0
- package/dist/merge.js +116 -0
- package/dist/merge.js.map +1 -0
- package/dist/nodeTest.d.ts +15 -0
- package/dist/nodeTest.d.ts.map +1 -0
- package/dist/nodeTest.js +121 -0
- package/dist/nodeTest.js.map +1 -0
- package/dist/project.d.ts +6 -1
- package/dist/project.d.ts.map +1 -1
- package/dist/project.js +26 -8
- package/dist/project.js.map +1 -1
- package/dist/query.d.ts +25 -0
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +280 -21
- package/dist/query.js.map +1 -1
- package/dist/register.mjs +40 -0
- package/dist/register.mjs.map +1 -1
- package/dist/reporter.d.ts +6 -13
- package/dist/reporter.d.ts.map +1 -1
- package/dist/reporter.js +21 -82
- package/dist/reporter.js.map +1 -1
- package/dist/resolve-loader.d.mts +1 -0
- package/dist/resolve-loader.d.mts.map +1 -1
- package/dist/resolve-loader.mjs +43 -0
- package/dist/resolve-loader.mjs.map +1 -1
- package/dist/runAnalysis.d.ts +19 -0
- package/dist/runAnalysis.d.ts.map +1 -0
- package/dist/runAnalysis.js +130 -0
- package/dist/runAnalysis.js.map +1 -0
- package/dist/runnerEvidence.d.ts +19 -0
- package/dist/runnerEvidence.d.ts.map +1 -0
- package/dist/runnerEvidence.js +93 -0
- package/dist/runnerEvidence.js.map +1 -0
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +3 -1
- package/dist/runtime.js.map +1 -1
- package/dist/sourceDiscovery.d.ts +9 -0
- package/dist/sourceDiscovery.d.ts.map +1 -0
- package/dist/sourceDiscovery.js +227 -0
- package/dist/sourceDiscovery.js.map +1 -0
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js +11 -5
- package/dist/transport.js.map +1 -1
- package/dist/types.d.ts +15 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/vitePlugin.d.ts +5 -0
- package/dist/vitePlugin.d.ts.map +1 -1
- package/dist/vitePlugin.js +44 -3
- package/dist/vitePlugin.js.map +1 -1
- package/dist/workspace.d.ts +39 -4
- package/dist/workspace.d.ts.map +1 -1
- package/dist/workspace.js +263 -46
- package/dist/workspace.js.map +1 -1
- package/docs/performance.md +107 -0
- package/docs/workspace-isolation.md +118 -0
- package/package.json +12 -2
package/dist/cli.js
CHANGED
|
@@ -1,14 +1,37 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
2
|
import { copyFileSync, existsSync, mkdirSync, readFileSync, rmSync, } from "node:fs";
|
|
3
3
|
import { relative, resolve, sep } from "node:path";
|
|
4
|
+
import { performance } from "node:perf_hooks";
|
|
4
5
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
5
6
|
import { atomicRenameSync, atomicWriteFileSync } from "./atomic.js";
|
|
6
|
-
import {
|
|
7
|
+
import { printCoverageSummary } from "./reporter.js";
|
|
8
|
+
import { analyzeCoverageArchive } from "./runAnalysis.js";
|
|
7
9
|
import { coverageQueryCommands, runQueryCommand } from "./query.js";
|
|
8
10
|
import { discoverCoverageProject } from "./project.js";
|
|
9
11
|
import { createRunIntegrity } from "./integrity.js";
|
|
12
|
+
import { writeEvidenceArchive } from "./evidenceArchive.js";
|
|
13
|
+
import { mergeCoverageRuns } from "./merge.js";
|
|
14
|
+
import { buildCacheReusePaths, instrumentedBuildCacheKey, readInstrumentedBuildCache, writeInstrumentedBuildCache, } from "./buildCache.js";
|
|
10
15
|
import { instrumentDirectWorkspace } from "./directInstrumenter.js";
|
|
11
|
-
import { acquireProjectLock, cachedWorkspacePath, cleanCoverageStorage, prepareCachedWorkspace, recoverAbandonedRuns, updateRunState, writeRunState, } from "./workspace.js";
|
|
16
|
+
import { acquireProjectLock, cachedWorkspacePath, cleanCoverageStorage, finalizePublishedRunStorage, prepareCachedWorkspace, pruneCoverageStorage, recoverAbandonedRuns, updateRunState, writeRunState, } from "./workspace.js";
|
|
17
|
+
function roundedTimings(timings) {
|
|
18
|
+
return Object.fromEntries(Object.entries(timings).map(([phase, duration]) => [
|
|
19
|
+
phase,
|
|
20
|
+
Math.round(duration * 10) / 10,
|
|
21
|
+
]));
|
|
22
|
+
}
|
|
23
|
+
function formatTimings(timings, totalMs) {
|
|
24
|
+
const rounded = roundedTimings(timings);
|
|
25
|
+
return [
|
|
26
|
+
`initialization=${rounded.initializationMs}ms`,
|
|
27
|
+
`workspace=${rounded.workspacePreparationMs}ms`,
|
|
28
|
+
`setup=${rounded.adapterSetupMs}ms`,
|
|
29
|
+
`build=${rounded.instrumentedBuildMs}ms`,
|
|
30
|
+
`tests=${rounded.testCommandMs}ms`,
|
|
31
|
+
`evidence=${rounded.evidencePublicationMs}ms`,
|
|
32
|
+
`total=${Math.round(totalMs * 10) / 10}ms`,
|
|
33
|
+
].join(" ");
|
|
34
|
+
}
|
|
12
35
|
let activeChild;
|
|
13
36
|
let signalEscalation;
|
|
14
37
|
function terminateChild(signal) {
|
|
@@ -68,7 +91,7 @@ function signalExitCode(signal) {
|
|
|
68
91
|
return 143;
|
|
69
92
|
return 128;
|
|
70
93
|
}
|
|
71
|
-
function
|
|
94
|
+
function parseRetentionOptions(command, args) {
|
|
72
95
|
let keep = 20;
|
|
73
96
|
let dryRun = false;
|
|
74
97
|
for (let index = 0; index < args.length; index += 1) {
|
|
@@ -82,21 +105,37 @@ function parseCleanOptions(args) {
|
|
|
82
105
|
keep = value;
|
|
83
106
|
}
|
|
84
107
|
else
|
|
85
|
-
throw new Error(`Unknown
|
|
108
|
+
throw new Error(`Unknown ${command} option: ${argument}`);
|
|
86
109
|
}
|
|
87
110
|
return { keep, dryRun };
|
|
88
111
|
}
|
|
89
112
|
function cleanCommand(args) {
|
|
90
|
-
const options =
|
|
113
|
+
const options = parseRetentionOptions("clean", args);
|
|
91
114
|
const result = cleanCoverageStorage(process.cwd(), options);
|
|
92
115
|
console.log(`[supercov] ${options.dryRun ? "would remove" : "removed"} ${result.removedRuns.length} stored run(s), ${result.removedWorkspaces.length} per-run workspace(s), and ${result.removedBuildCache ? "the" : "no"} isolated build cache; keeping ${options.keep} newest run(s)`);
|
|
93
116
|
for (const id of result.removedRuns)
|
|
94
117
|
console.log(id);
|
|
95
118
|
}
|
|
119
|
+
function pruneCommand(args) {
|
|
120
|
+
const options = parseRetentionOptions("prune", args);
|
|
121
|
+
const result = pruneCoverageStorage(process.cwd(), options);
|
|
122
|
+
console.log(`[supercov] ${options.dryRun ? "would remove" : "removed"} ${result.removedRuns.length} stored run(s), ${result.removedWorkspaces.length} terminal/orphan work director${result.removedWorkspaces.length === 1 ? "y" : "ies"}, and ${result.removedEvidence.length} loose evidence director${result.removedEvidence.length === 1 ? "y" : "ies"}; keeping ${options.keep} newest run(s) and preserving the shared cache`);
|
|
123
|
+
for (const id of result.removedRuns)
|
|
124
|
+
console.log(id);
|
|
125
|
+
}
|
|
96
126
|
async function createCoverageRun(command) {
|
|
97
127
|
const root = process.cwd();
|
|
98
128
|
const runId = new Date().toISOString().replace(/[:.]/g, "-");
|
|
99
129
|
const runStartedAt = Date.now();
|
|
130
|
+
const runStartedMonotonic = performance.now();
|
|
131
|
+
const timings = {
|
|
132
|
+
initializationMs: 0,
|
|
133
|
+
workspacePreparationMs: 0,
|
|
134
|
+
adapterSetupMs: 0,
|
|
135
|
+
instrumentedBuildMs: 0,
|
|
136
|
+
testCommandMs: 0,
|
|
137
|
+
evidencePublicationMs: 0,
|
|
138
|
+
};
|
|
100
139
|
const recovered = recoverAbandonedRuns(root);
|
|
101
140
|
if (recovered.length > 0)
|
|
102
141
|
console.error(`[supercov] recovered abandoned run(s): ${recovered.join(", ")}`);
|
|
@@ -105,7 +144,12 @@ async function createCoverageRun(command) {
|
|
|
105
144
|
const packageSource = fileURLToPath(new URL(".", import.meta.url));
|
|
106
145
|
const runIntegrity = createRunIntegrity(root, project, packageSource);
|
|
107
146
|
const workspace = cachedWorkspacePath(root);
|
|
108
|
-
const
|
|
147
|
+
const buildCacheKey = instrumentedBuildCacheKey(runIntegrity, project);
|
|
148
|
+
const reusableBuild = project.buildAdapter !== "direct"
|
|
149
|
+
? readInstrumentedBuildCache(workspace, buildCacheKey)
|
|
150
|
+
: undefined;
|
|
151
|
+
const serverEvidenceRoot = resolve(workspace, ".supercov/server-evidence");
|
|
152
|
+
const runStagingDirectory = resolve(root, ".supercov/work", runId, "run-publication");
|
|
109
153
|
const storedRunDirectory = resolve(root, ".supercov/runs", runId);
|
|
110
154
|
const startedAt = new Date(runStartedAt).toISOString();
|
|
111
155
|
writeRunState(root, runId, {
|
|
@@ -138,11 +182,21 @@ async function createCoverageRun(command) {
|
|
|
138
182
|
}
|
|
139
183
|
let buildResult;
|
|
140
184
|
let testResult;
|
|
141
|
-
let
|
|
185
|
+
let publicationFailed = false;
|
|
186
|
+
let runPublished = false;
|
|
187
|
+
let timingsPrinted = false;
|
|
188
|
+
timings.initializationMs = performance.now() - runStartedMonotonic;
|
|
142
189
|
try {
|
|
143
|
-
|
|
190
|
+
let phaseStarted = performance.now();
|
|
191
|
+
const isolatedRoot = prepareCachedWorkspace(root, {
|
|
192
|
+
...(reusableBuild
|
|
193
|
+
? { reusePaths: buildCacheReusePaths(reusableBuild) }
|
|
194
|
+
: {}),
|
|
195
|
+
});
|
|
196
|
+
timings.workspacePreparationMs = performance.now() - phaseStarted;
|
|
144
197
|
if (receivedSignal)
|
|
145
198
|
throw new Error(`Interrupted by ${receivedSignal}`);
|
|
199
|
+
phaseStarted = performance.now();
|
|
146
200
|
const generatedDirectory = resolve(isolatedRoot, ".supercov");
|
|
147
201
|
const evidenceDirectoryRelative = `.supercov/evidence/${runId}`;
|
|
148
202
|
const isolatedEvidenceDirectory = resolve(isolatedRoot, evidenceDirectoryRelative);
|
|
@@ -150,24 +204,32 @@ async function createCoverageRun(command) {
|
|
|
150
204
|
const generatedPlaywrightConfig = resolve(generatedDirectory, "playwright.config.mjs");
|
|
151
205
|
const generatedViteConfig = resolve(generatedDirectory, "vite.config.mjs");
|
|
152
206
|
const generatedVitestConfig = resolve(generatedDirectory, "vitest.config.mjs");
|
|
207
|
+
const generatedJestConfig = resolve(generatedDirectory, "jest.config.mjs");
|
|
153
208
|
const manifestPath = resolve(generatedDirectory, "manifest.json");
|
|
209
|
+
const buildOutputMetadataPath = resolve(generatedDirectory, "build-outputs.json");
|
|
154
210
|
const isolatedPlaywrightConfig = project.playwrightConfig
|
|
155
211
|
? resolve(isolatedRoot, relative(root, project.playwrightConfig))
|
|
156
212
|
: undefined;
|
|
157
213
|
const isolatedVitestConfig = project.vitestConfig
|
|
158
214
|
? resolve(isolatedRoot, relative(root, project.vitestConfig))
|
|
159
215
|
: undefined;
|
|
216
|
+
const isolatedJestConfig = project.jestConfig
|
|
217
|
+
? resolve(isolatedRoot, relative(root, project.jestConfig))
|
|
218
|
+
: undefined;
|
|
160
219
|
mkdirSync(generatedDirectory, { recursive: true });
|
|
161
220
|
mkdirSync(isolatedEvidenceDirectory, { recursive: true });
|
|
221
|
+
atomicWriteFileSync(resolve(generatedDirectory, "package.json"), `${JSON.stringify({ private: true, type: "module" })}\n`);
|
|
162
222
|
for (const file of [
|
|
163
223
|
"atomic.js",
|
|
164
224
|
"launchSupervisor.js",
|
|
225
|
+
"nodeTest.js",
|
|
165
226
|
"playwright.js",
|
|
166
227
|
"playwrightReporter.js",
|
|
167
228
|
"provenance.js",
|
|
168
229
|
"register.mjs",
|
|
169
230
|
"resolve-loader.mjs",
|
|
170
231
|
"runtime.js",
|
|
232
|
+
"runnerEvidence.js",
|
|
171
233
|
"transport.js",
|
|
172
234
|
"types.js",
|
|
173
235
|
]) {
|
|
@@ -258,7 +320,7 @@ async function createCoverageRun(command) {
|
|
|
258
320
|
` const relocateOutput = output => output ? ({ ...output, dir: output.dir ? relocate(output.dir, 'Rollup output') : output.dir, file: output.file ? relocate(output.file, 'Rollup output') : output.file }) : output;`,
|
|
259
321
|
` const rollupOutput = config.build?.rollupOptions?.output;`,
|
|
260
322
|
` const safe = { ...config, cacheDir: resolve(isolatedRoot, '.supercov/vite-cache'), build: { ...config.build, outDir: relocate(config.build?.outDir ?? 'dist', 'Vite build output'), rollupOptions: { ...config.build?.rollupOptions, output: Array.isArray(rollupOutput) ? rollupOutput.map(relocateOutput) : relocateOutput(rollupOutput) } } };`,
|
|
261
|
-
` return mergeConfig(safe, { plugins: [mcdcVitePlugin(${JSON.stringify({ root: isolatedRoot, sourceRoots: project.sourceRoots, manifestPath })})] });`,
|
|
323
|
+
` return mergeConfig(safe, { plugins: [mcdcVitePlugin(${JSON.stringify({ root: isolatedRoot, sourceRoots: project.sourceRoots, sourceFiles: project.sourceFiles, sourceScope: project.sourceScope, sourceLimitations: project.sourceLimitations, manifestPath, buildOutputMetadataPath })})] });`,
|
|
262
324
|
`}`,
|
|
263
325
|
"",
|
|
264
326
|
].join("\n"));
|
|
@@ -273,7 +335,7 @@ async function createCoverageRun(command) {
|
|
|
273
335
|
` const loaded = originalPath ? await loadConfigFromFile(env, originalPath, process.cwd()) : undefined;`,
|
|
274
336
|
` const config = mergeConfig(loaded?.config ?? {}, {`,
|
|
275
337
|
` cacheDir: resolve(process.cwd(), '.supercov/vitest-cache'),`,
|
|
276
|
-
` plugins: ${project.buildAdapter === "vite" ? `[mcdcVitePlugin(${JSON.stringify({ root: isolatedRoot, sourceRoots: project.sourceRoots, manifestPath })})]` : "[]"},`,
|
|
338
|
+
` plugins: ${project.buildAdapter === "vite" ? `[mcdcVitePlugin(${JSON.stringify({ root: isolatedRoot, sourceRoots: project.sourceRoots, sourceFiles: project.sourceFiles, sourceScope: project.sourceScope, sourceLimitations: project.sourceLimitations, manifestPath })})]` : "[]"},`,
|
|
277
339
|
` test: { setupFiles: [${JSON.stringify(resolve(packageSource, "vitest.js"))}], maxConcurrency: 1 },`,
|
|
278
340
|
` });`,
|
|
279
341
|
` const configuredReporters = loaded?.config?.test?.reporters;`,
|
|
@@ -285,12 +347,65 @@ async function createCoverageRun(command) {
|
|
|
285
347
|
`}`,
|
|
286
348
|
"",
|
|
287
349
|
].join("\n"));
|
|
350
|
+
const generatedJestSetup = resolve(generatedDirectory, "jest.setup.cjs");
|
|
351
|
+
const generatedJestReporter = resolve(generatedDirectory, "jest-reporter.cjs");
|
|
352
|
+
const jestEvidenceHelpers = [
|
|
353
|
+
`const { createHash } = require('node:crypto');`,
|
|
354
|
+
`const { mkdirSync, renameSync, writeFileSync } = require('node:fs');`,
|
|
355
|
+
`const { relative, resolve, sep } = require('node:path');`,
|
|
356
|
+
`const local = file => file ? relative(process.cwd(), file).split(sep).join('/') : 'unknown';`,
|
|
357
|
+
`const id = (file, name) => 'jest:' + createHash('sha256').update(['jest', local(file), 0, 0, name].join('\\0')).digest('hex').slice(0, 24);`,
|
|
358
|
+
`const scope = (file, name, retry) => { const testId = id(file, name); const testKey = createHash('sha256').update(testId).digest('hex').slice(0, 24); return { version: 1, runId: process.env.SUPERCOV_RUN_ID || 'unscoped', workerId: 'jest-' + (process.env.JEST_WORKER_ID || process.pid), testId, testKey, retry, attemptId: testKey + '-' + retry }; };`,
|
|
359
|
+
`const provenance = file => ({ runner: 'jest', kind: process.env.SUPERCOV_TEST_KIND || (/(^|[/_.-])(e2e|end-to-end|offline|online)([/_.-]|$)/i.test(file) ? 'e2e' : /(^|[/_.-])(integration|int)([/_.-]|$)/i.test(file) ? 'integration' : /(^|[/_.-])(component|components|ct)([/_.-]|$)/i.test(file) ? 'component' : 'unit'), source: process.env.SUPERCOV_TEST_KIND ? 'explicit' : 'runner-default' });`,
|
|
360
|
+
`const write = (payload, suffix) => { const base = process.env.SUPERCOV_EVIDENCE_DIR; if (!base) return; const directory = resolve(process.cwd(), base, suffix); mkdirSync(directory, { recursive: true }); const target = resolve(directory, 'mcdc.json'); const temporary = target + '.' + process.pid + '.' + Math.random().toString(16).slice(2) + '.tmp'; writeFileSync(temporary, JSON.stringify(payload) + '\\n'); renameSync(temporary, target); };`,
|
|
361
|
+
];
|
|
362
|
+
atomicWriteFileSync(generatedJestSetup, [
|
|
363
|
+
...jestEvidenceHelpers,
|
|
364
|
+
`const { bind: bindJestEach } = require('jest-each');`,
|
|
365
|
+
`const attempts = new Map();`,
|
|
366
|
+
`const suites = [];`,
|
|
367
|
+
`const copyModifiers = (target, source, wrap, ancestors = new Set()) => { if (ancestors.has(source)) return target; const seen = new Set(ancestors); seen.add(source); for (const key of Object.getOwnPropertyNames(source)) { if (['length', 'name', 'prototype'].includes(key)) continue; const value = source[key]; if (typeof value !== 'function') continue; try { const decorated = key === 'each' ? (...eachArgs) => wrap(value.apply(source, eachArgs), eachArgs) : copyModifiers(wrap(value.bind(source)), value, wrap, seen); Object.defineProperty(target, key, { configurable: true, enumerable: true, value: decorated }); } catch {} } return target; };`,
|
|
368
|
+
`const wrapTest = (original, eachArgs) => { const wrapped = function(...args) { const callbackIndex = args.findLastIndex(value => typeof value === 'function'); if (callbackIndex < 0) return original.apply(this, args); const callback = args[callbackIndex]; const title = typeof args[0] === 'string' ? args[0] : callback.name || 'anonymous test'; const expandedNames = []; if (eachArgs) { try { bindJestEach(name => expandedNames.push([...suites, name].join(' ')))(...eachArgs)(title, callback, args[callbackIndex + 1]); } catch {} } const registeredName = [...suites, title].join(' '); let invocation = 0; const next = [...args]; const execute = (owner, callbackArgs) => { const state = expect.getState(); const file = state.testPath; const name = expandedNames.length ? expandedNames[invocation++ % expandedNames.length] : registeredName; const testId = id(file, name); const retry = attempts.get(testId) || 0; attempts.set(testId, retry + 1); const execution = scope(file, name, retry); return process.__SUPERCOV_DIRECT_RUNTIME__.withCoverageCarrier({ version: 1, scope: execution }, () => callback.apply(owner, callbackArgs)); }; let instrumented; if (eachArgs) { instrumented = function(...callbackArgs) { return execute(this, callbackArgs); }; try { Object.defineProperty(instrumented, 'length', { value: callback.length }); } catch {} } else { instrumented = callback.length ? function(done) { return execute(this, [done]); } : function() { return execute(this, []); }; } next[callbackIndex] = instrumented; return original.apply(this, next); }; return copyModifiers(wrapped, original, wrapTest); };`,
|
|
369
|
+
`const wrapSuite = original => { const wrapped = function(...args) { const callbackIndex = args.findLastIndex(value => typeof value === 'function'); if (callbackIndex < 0) return original.apply(this, args); const callback = args[callbackIndex]; const name = typeof args[0] === 'string' ? args[0] : callback.name || 'suite'; const next = [...args]; next[callbackIndex] = function(...callbackArgs) { suites.push(name); try { return callback.apply(this, callbackArgs); } finally { suites.pop(); } }; return original.apply(this, next); }; return copyModifiers(wrapped, original, wrapSuite); };`,
|
|
370
|
+
`globalThis.test = wrapTest(globalThis.test);`,
|
|
371
|
+
`globalThis.it = globalThis.test;`,
|
|
372
|
+
`globalThis.describe = wrapSuite(globalThis.describe);`,
|
|
373
|
+
"",
|
|
374
|
+
].join("\n"));
|
|
375
|
+
atomicWriteFileSync(generatedJestReporter, [
|
|
376
|
+
...jestEvidenceHelpers,
|
|
377
|
+
`module.exports = class SupercovJestReporter {`,
|
|
378
|
+
` onTestResult(_suite, result) { for (const assertion of result.testResults || []) {`,
|
|
379
|
+
` const file = result.testFilePath; const name = assertion.fullName || [...(assertion.ancestorTitles || []), assertion.title || 'unknown test'].join(' '); const retry = Math.max(0, (assertion.invocations || 1) - 1); const execution = scope(file, name, retry); const status = assertion.status === 'passed' ? 'passed' : assertion.status === 'failed' ? 'failed' : ['pending', 'todo', 'disabled'].includes(assertion.status) ? 'skipped' : 'unknown';`,
|
|
380
|
+
` write({ testId: execution.testId, scope: execution, test: name, testFile: local(file), title: assertion.title || name, retry, status, flaky: (assertion.retryReasons || []).length > 0, provenance: provenance(local(file)), runtime: [], browser: [], server: [] }, 'jest-' + execution.attemptId + '-status');`,
|
|
381
|
+
` } }`,
|
|
382
|
+
`};`,
|
|
383
|
+
"",
|
|
384
|
+
].join("\n"));
|
|
385
|
+
const jestOriginal = isolatedJestConfig
|
|
386
|
+
? `import originalModule from ${JSON.stringify(pathToFileURL(isolatedJestConfig).href)};\nconst original = typeof originalModule === 'function' ? await originalModule() : originalModule;`
|
|
387
|
+
: `const original = {};`;
|
|
388
|
+
atomicWriteFileSync(generatedJestConfig, [
|
|
389
|
+
`import { isAbsolute, resolve } from 'node:path';`,
|
|
390
|
+
jestOriginal,
|
|
391
|
+
`const decorate = config => ({ ...config,`,
|
|
392
|
+
` rootDir: config?.rootDir ? (isAbsolute(config.rootDir) ? config.rootDir : resolve(${JSON.stringify(isolatedJestConfig ? resolve(isolatedJestConfig, "..") : isolatedRoot)}, config.rootDir)) : ${JSON.stringify(isolatedRoot)},`,
|
|
393
|
+
` setupFilesAfterEnv: [...(config?.setupFilesAfterEnv ?? []), ${JSON.stringify(generatedJestSetup)}],`,
|
|
394
|
+
` reporters: [...(config?.reporters ?? ['default']), ${JSON.stringify(generatedJestReporter)}],`,
|
|
395
|
+
` testLocationInResults: true,`,
|
|
396
|
+
`});`,
|
|
397
|
+
`export default { ...decorate(original), projects: original?.projects?.map(project => typeof project === 'object' ? decorate(project) : project) };`,
|
|
398
|
+
"",
|
|
399
|
+
].join("\n"));
|
|
288
400
|
const coverageEnv = {
|
|
289
401
|
...process.env,
|
|
290
402
|
SUPERCOV_EVIDENCE_DIR: evidenceDirectoryRelative,
|
|
291
403
|
SUPERCOV_EXECUTION_FINGERPRINT: runIntegrity.fingerprint.execution,
|
|
292
404
|
SUPERCOV_EXECUTION_LOG: resolve(isolatedEvidenceDirectory, "execution.jsonl"),
|
|
405
|
+
SUPERCOV_ESM_TRANSFORMER: pathToFileURL(resolve(packageSource, "esmInterceptor.js")).href,
|
|
406
|
+
SUPERCOV_ESM_CAPABILITY_WRAPPER: pathToFileURL(resolve(generatedDirectory, "launchSupervisor.js")).href,
|
|
293
407
|
SUPERCOV_RUN_ID: runId,
|
|
408
|
+
SUPERCOV_SERVER_EVIDENCE_ROOT: serverEvidenceRoot,
|
|
294
409
|
SUPERCOV_MANIFEST: manifestPath,
|
|
295
410
|
SUPERCOV_PLAYWRIGHT_MODULE: project.playwrightModule,
|
|
296
411
|
SUPERCOV_PLAYWRIGHT_TEST_EXPORT: project.playwrightTestExport,
|
|
@@ -301,6 +416,7 @@ async function createCoverageRun(command) {
|
|
|
301
416
|
: {}),
|
|
302
417
|
SUPERCOV_GENERATED_VITEST_CONFIG: generatedVitestConfig,
|
|
303
418
|
SUPERCOV_GENERATED_PLAYWRIGHT_CONFIG: generatedPlaywrightConfig,
|
|
419
|
+
SUPERCOV_GENERATED_JEST_CONFIG: generatedJestConfig,
|
|
304
420
|
...(isolatedPlaywrightConfig
|
|
305
421
|
? { SUPERCOV_ORIGINAL_PLAYWRIGHT_CONFIG: isolatedPlaywrightConfig }
|
|
306
422
|
: {}),
|
|
@@ -311,16 +427,33 @@ async function createCoverageRun(command) {
|
|
|
311
427
|
]
|
|
312
428
|
.filter(Boolean)
|
|
313
429
|
.join(" ");
|
|
430
|
+
timings.adapterSetupMs = performance.now() - phaseStarted;
|
|
314
431
|
updateRunState(root, runId, { status: "building" });
|
|
315
432
|
console.error(`[supercov] instrumenting isolated workspace ${isolatedRoot}`);
|
|
316
433
|
if (Object.keys(project.buildEnvironment).length > 0)
|
|
317
434
|
console.error(`[supercov] inferred build mode from command/config: ${Object.entries(project.buildEnvironment)
|
|
318
435
|
.map(([key, value]) => `${key}=${value}`)
|
|
319
436
|
.join(" ")}`);
|
|
320
|
-
|
|
321
|
-
|
|
437
|
+
phaseStarted = performance.now();
|
|
438
|
+
if (reusableBuild) {
|
|
439
|
+
console.error(`[supercov] reusing exact-fingerprint instrumented build ${buildCacheKey.slice(0, 12)}`);
|
|
322
440
|
buildResult = { status: 0, signal: null };
|
|
323
441
|
}
|
|
442
|
+
else if (project.buildAdapter === "direct") {
|
|
443
|
+
instrumentDirectWorkspace(isolatedRoot, project.sourceFiles, manifestPath, project.sourceScope, project.sourceLimitations);
|
|
444
|
+
buildResult = { status: 0, signal: null };
|
|
445
|
+
}
|
|
446
|
+
else if (project.buildAdapter === "generic") {
|
|
447
|
+
instrumentDirectWorkspace(isolatedRoot, project.sourceFiles, manifestPath, project.sourceScope, project.sourceLimitations, "module");
|
|
448
|
+
buildResult = await runChild(project.buildCommand[0], project.buildCommand.slice(1), {
|
|
449
|
+
cwd: isolatedRoot,
|
|
450
|
+
env: {
|
|
451
|
+
...coverageEnv,
|
|
452
|
+
...project.buildEnvironment,
|
|
453
|
+
NODE_ENV: "production",
|
|
454
|
+
},
|
|
455
|
+
});
|
|
456
|
+
}
|
|
324
457
|
else {
|
|
325
458
|
buildResult = await runChild(project.buildCommand[0], [
|
|
326
459
|
...project.buildCommand.slice(1),
|
|
@@ -336,6 +469,12 @@ async function createCoverageRun(command) {
|
|
|
336
469
|
},
|
|
337
470
|
});
|
|
338
471
|
}
|
|
472
|
+
if (buildResult.status === 0 &&
|
|
473
|
+
project.buildAdapter !== "direct" &&
|
|
474
|
+
!reusableBuild) {
|
|
475
|
+
writeInstrumentedBuildCache(isolatedRoot, buildCacheKey);
|
|
476
|
+
}
|
|
477
|
+
timings.instrumentedBuildMs = performance.now() - phaseStarted;
|
|
339
478
|
if (receivedSignal)
|
|
340
479
|
throw new Error(`Interrupted by ${receivedSignal}`);
|
|
341
480
|
if (buildResult.error)
|
|
@@ -343,6 +482,7 @@ async function createCoverageRun(command) {
|
|
|
343
482
|
if (buildResult.status === 0) {
|
|
344
483
|
updateRunState(root, runId, { status: "testing" });
|
|
345
484
|
console.error(`[supercov] running in isolated workspace: ${command.join(" ")}`);
|
|
485
|
+
phaseStarted = performance.now();
|
|
346
486
|
testResult = await runChild(command[0], command.slice(1), {
|
|
347
487
|
cwd: isolatedRoot,
|
|
348
488
|
env: {
|
|
@@ -351,38 +491,65 @@ async function createCoverageRun(command) {
|
|
|
351
491
|
SUPERCOV_CJS_INTERCEPT: "1",
|
|
352
492
|
},
|
|
353
493
|
});
|
|
494
|
+
timings.testCommandMs = performance.now() - phaseStarted;
|
|
354
495
|
if (receivedSignal)
|
|
355
496
|
throw new Error(`Interrupted by ${receivedSignal}`);
|
|
356
497
|
if (testResult.error)
|
|
357
498
|
throw testResult.error;
|
|
358
|
-
updateRunState(root, runId, { status: "
|
|
499
|
+
updateRunState(root, runId, { status: "publishing" });
|
|
500
|
+
phaseStarted = performance.now();
|
|
359
501
|
rmSync(persistedEvidenceDirectory, { recursive: true, force: true });
|
|
360
502
|
if (existsSync(isolatedEvidenceDirectory))
|
|
361
503
|
atomicRenameSync(isolatedEvidenceDirectory, persistedEvidenceDirectory);
|
|
362
504
|
try {
|
|
363
|
-
rmSync(
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
505
|
+
rmSync(runStagingDirectory, { recursive: true, force: true });
|
|
506
|
+
const evidenceArchivePath = resolve(runStagingDirectory, "evidence.raw.gz");
|
|
507
|
+
const rawEvidence = writeEvidenceArchive([
|
|
508
|
+
{ file: manifestPath, path: "manifest.json" },
|
|
509
|
+
{ directory: persistedEvidenceDirectory },
|
|
510
|
+
{
|
|
511
|
+
directory: resolve(serverEvidenceRoot, runId),
|
|
512
|
+
prefix: "server",
|
|
513
|
+
},
|
|
514
|
+
], evidenceArchivePath);
|
|
515
|
+
printCoverageSummary(analyzeCoverageArchive(evidenceArchivePath, {
|
|
516
|
+
runId,
|
|
517
|
+
testExitCode: testResult.status,
|
|
518
|
+
integrity: runIntegrity,
|
|
519
|
+
generatedAt: startedAt,
|
|
520
|
+
}));
|
|
521
|
+
timings.evidencePublicationMs = performance.now() - phaseStarted;
|
|
522
|
+
atomicWriteFileSync(resolve(runStagingDirectory, "run.json"), `${JSON.stringify({
|
|
369
523
|
id: runId,
|
|
370
524
|
startedAt,
|
|
371
525
|
durationMs: Date.now() - runStartedAt,
|
|
372
526
|
command,
|
|
373
527
|
testExitCode: testResult.status,
|
|
374
528
|
integrity: runIntegrity,
|
|
529
|
+
rawEvidence,
|
|
375
530
|
isolatedBuild: true,
|
|
531
|
+
instrumentedBuildCache: {
|
|
532
|
+
key: buildCacheKey,
|
|
533
|
+
reused: Boolean(reusableBuild),
|
|
534
|
+
},
|
|
535
|
+
timings: roundedTimings(timings),
|
|
376
536
|
}, null, 2)}\n`);
|
|
377
|
-
atomicRenameSync(
|
|
537
|
+
atomicRenameSync(runStagingDirectory, storedRunDirectory);
|
|
538
|
+
runPublished = true;
|
|
539
|
+
console.log(`[coverage] evidence: ${resolve(storedRunDirectory, "evidence.raw.gz")}`);
|
|
378
540
|
}
|
|
379
541
|
catch (error) {
|
|
380
|
-
|
|
381
|
-
|
|
542
|
+
timings.evidencePublicationMs = performance.now() - phaseStarted;
|
|
543
|
+
publicationFailed = true;
|
|
544
|
+
console.error("[supercov] failed to publish coverage evidence", error);
|
|
382
545
|
}
|
|
383
546
|
}
|
|
384
|
-
const resultCode = exitCode(buildResult) || exitCode(testResult) || (
|
|
547
|
+
const resultCode = exitCode(buildResult) || exitCode(testResult) || (publicationFailed ? 1 : 0);
|
|
385
548
|
updateRunState(root, runId, { status: resultCode === 0 ? "complete" : "failed" });
|
|
549
|
+
if (runPublished && !finalizePublishedRunStorage(root, runId))
|
|
550
|
+
throw new Error(`Published run ${runId} is missing a durable artifact`);
|
|
551
|
+
console.error(`[supercov] timings ${formatTimings(timings, performance.now() - runStartedMonotonic)}`);
|
|
552
|
+
timingsPrinted = true;
|
|
386
553
|
return resultCode;
|
|
387
554
|
}
|
|
388
555
|
catch (error) {
|
|
@@ -403,6 +570,8 @@ async function createCoverageRun(command) {
|
|
|
403
570
|
return receivedSignal ? signalExitCode(receivedSignal) : 1;
|
|
404
571
|
}
|
|
405
572
|
finally {
|
|
573
|
+
if (!timingsPrinted)
|
|
574
|
+
console.error(`[supercov] timings ${formatTimings(timings, performance.now() - runStartedMonotonic)}`);
|
|
406
575
|
if (signalEscalation) {
|
|
407
576
|
clearTimeout(signalEscalation);
|
|
408
577
|
signalEscalation = undefined;
|
|
@@ -410,7 +579,11 @@ async function createCoverageRun(command) {
|
|
|
410
579
|
for (const [signal, handler] of signalHandlers)
|
|
411
580
|
process.removeListener(signal, handler);
|
|
412
581
|
try {
|
|
413
|
-
rmSync(
|
|
582
|
+
rmSync(runStagingDirectory, { recursive: true, force: true });
|
|
583
|
+
rmSync(resolve(serverEvidenceRoot, runId), {
|
|
584
|
+
recursive: true,
|
|
585
|
+
force: true,
|
|
586
|
+
});
|
|
414
587
|
// The stable isolated namespace is a deliberate build/snapshot cache.
|
|
415
588
|
// It never overlaps the user's ordinary build and `supercov clean`
|
|
416
589
|
// removes it deterministically.
|
|
@@ -426,9 +599,23 @@ const rawArgs = commandArgs[0] === "--help" || commandArgs[0] === "-h"
|
|
|
426
599
|
? ["help", ...commandArgs.slice(1)]
|
|
427
600
|
: commandArgs;
|
|
428
601
|
const queryCommand = rawArgs[0];
|
|
429
|
-
if (queryCommand === "clean") {
|
|
602
|
+
if (queryCommand === "clean" || queryCommand === "prune") {
|
|
603
|
+
try {
|
|
604
|
+
if (queryCommand === "clean")
|
|
605
|
+
cleanCommand(rawArgs.slice(1));
|
|
606
|
+
else
|
|
607
|
+
pruneCommand(rawArgs.slice(1));
|
|
608
|
+
}
|
|
609
|
+
catch (error) {
|
|
610
|
+
console.error(`[supercov] ${error instanceof Error ? error.message : String(error)}`);
|
|
611
|
+
process.exitCode = 2;
|
|
612
|
+
}
|
|
613
|
+
}
|
|
614
|
+
else if (queryCommand === "merge") {
|
|
430
615
|
try {
|
|
431
|
-
|
|
616
|
+
const mergedRunId = mergeCoverageRuns(process.cwd(), rawArgs.slice(1));
|
|
617
|
+
console.log(`[supercov] merged run ${mergedRunId}`);
|
|
618
|
+
console.log(`npx supercov runs ${mergedRunId} coverage`);
|
|
432
619
|
}
|
|
433
620
|
catch (error) {
|
|
434
621
|
console.error(`[supercov] ${error instanceof Error ? error.message : String(error)}`);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type { CoverageManifest } from "./types.ts";
|
|
1
|
+
import type { CoverageLimitation, CoverageManifest } from "./types.ts";
|
|
2
2
|
/**
|
|
3
3
|
* Instrument source inside Supercov's disposable workspace when a project has
|
|
4
4
|
* no build step. The preload supplies the runtime through a global so the
|
|
5
5
|
* transformed source remains valid in ESM, CommonJS, and transpiler inputs.
|
|
6
6
|
*/
|
|
7
|
-
export declare function instrumentDirectWorkspace(root: string,
|
|
7
|
+
export declare function instrumentDirectWorkspace(root: string, sourceFiles: string[], manifestPath: string, scope?: CoverageManifest["scope"], initialLimitations?: CoverageLimitation[], runtimeMode?: "global" | "module"): CoverageManifest;
|
|
8
8
|
//# sourceMappingURL=directInstrumenter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"directInstrumenter.d.ts","sourceRoot":"","sources":["../src/directInstrumenter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"directInstrumenter.d.ts","sourceRoot":"","sources":["../src/directInstrumenter.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAEV,kBAAkB,EAClB,gBAAgB,EAGjB,MAAM,YAAY,CAAC;AA8CpB;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EAAE,EACrB,YAAY,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,EACjC,kBAAkB,GAAE,kBAAkB,EAAO,EAC7C,WAAW,GAAE,QAAQ,GAAG,QAAmB,GAC1C,gBAAgB,CA+BlB"}
|
|
@@ -1,20 +1,7 @@
|
|
|
1
|
-
import { existsSync, readFileSync,
|
|
1
|
+
import { existsSync, readFileSync, } from "node:fs";
|
|
2
2
|
import { relative, resolve, sep } from "node:path";
|
|
3
3
|
import { atomicWriteFileSync } from "./atomic.js";
|
|
4
4
|
import { instrumentMcdc, mcdcRuntimeModuleId } from "./instrumenter.js";
|
|
5
|
-
function sourceFiles(directory) {
|
|
6
|
-
if (!existsSync(directory))
|
|
7
|
-
return [];
|
|
8
|
-
return readdirSync(directory, { withFileTypes: true }).flatMap((entry) => {
|
|
9
|
-
const path = resolve(directory, entry.name);
|
|
10
|
-
if (entry.isDirectory())
|
|
11
|
-
return sourceFiles(path);
|
|
12
|
-
return entry.isFile() && /\.[cm]?[jt]sx?$/.test(entry.name) &&
|
|
13
|
-
!/\.d\.[cm]?ts$/.test(entry.name)
|
|
14
|
-
? [path]
|
|
15
|
-
: [];
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
5
|
function directRuntime(code) {
|
|
19
6
|
const escapedModule = mcdcRuntimeModuleId.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
20
7
|
return code.replace(new RegExp(`import\\s*\\{([\\s\\S]*?)\\}\\s*from\\s*["']${escapedModule}["'];?`), (_statement, bindings) => {
|
|
@@ -29,9 +16,16 @@ function directRuntime(code) {
|
|
|
29
16
|
return imported === local ? imported : `${imported}: ${local}`;
|
|
30
17
|
})
|
|
31
18
|
.join(", ");
|
|
32
|
-
return `const { ${properties} } = globalThis.__SUPERCOV_DIRECT_RUNTIME__;`;
|
|
19
|
+
return `const { ${properties} } = globalThis.__SUPERCOV_DIRECT_RUNTIME__ ?? process.__SUPERCOV_DIRECT_RUNTIME__;`;
|
|
33
20
|
});
|
|
34
21
|
}
|
|
22
|
+
function moduleRuntime(code, sourcePath, runtimePath) {
|
|
23
|
+
const local = relative(resolve(sourcePath, ".."), runtimePath)
|
|
24
|
+
.split(sep)
|
|
25
|
+
.join("/");
|
|
26
|
+
const specifier = local.startsWith(".") ? local : `./${local}`;
|
|
27
|
+
return code.replaceAll(mcdcRuntimeModuleId, specifier);
|
|
28
|
+
}
|
|
35
29
|
function sortByLocation(values) {
|
|
36
30
|
return values.sort((left, right) => left.file === right.file
|
|
37
31
|
? left.line - right.line || left.column - right.column
|
|
@@ -42,20 +36,23 @@ function sortByLocation(values) {
|
|
|
42
36
|
* no build step. The preload supplies the runtime through a global so the
|
|
43
37
|
* transformed source remains valid in ESM, CommonJS, and transpiler inputs.
|
|
44
38
|
*/
|
|
45
|
-
export function instrumentDirectWorkspace(root,
|
|
39
|
+
export function instrumentDirectWorkspace(root, sourceFiles, manifestPath, scope, initialLimitations = [], runtimeMode = "global") {
|
|
46
40
|
const decisions = [];
|
|
47
41
|
const points = [];
|
|
48
42
|
const branches = [];
|
|
49
|
-
const limitations = [];
|
|
50
|
-
for (const
|
|
51
|
-
|
|
43
|
+
const limitations = [...initialLimitations];
|
|
44
|
+
for (const sourceFile of sourceFiles) {
|
|
45
|
+
const path = resolve(root, sourceFile);
|
|
46
|
+
if (existsSync(path)) {
|
|
52
47
|
const file = relative(root, path).split(sep).join("/");
|
|
53
48
|
const result = instrumentMcdc(readFileSync(path, "utf8"), file);
|
|
54
49
|
decisions.push(...result.manifest.decisions);
|
|
55
50
|
points.push(...result.manifest.points);
|
|
56
51
|
branches.push(...result.manifest.branches);
|
|
57
52
|
limitations.push(...(result.manifest.limitations ?? []));
|
|
58
|
-
atomicWriteFileSync(path,
|
|
53
|
+
atomicWriteFileSync(path, runtimeMode === "module"
|
|
54
|
+
? moduleRuntime(result.code, path, resolve(root, ".supercov/runtime.js"))
|
|
55
|
+
: directRuntime(result.code));
|
|
59
56
|
}
|
|
60
57
|
}
|
|
61
58
|
const manifest = {
|
|
@@ -63,6 +60,7 @@ export function instrumentDirectWorkspace(root, sourceRoots, manifestPath) {
|
|
|
63
60
|
points: sortByLocation(points),
|
|
64
61
|
branches: sortByLocation(branches),
|
|
65
62
|
limitations: sortByLocation(limitations),
|
|
63
|
+
...(scope ? { scope } : {}),
|
|
66
64
|
};
|
|
67
65
|
atomicWriteFileSync(manifestPath, `${JSON.stringify(manifest, null, 2)}\n`);
|
|
68
66
|
return manifest;
|