@overkill-dev/run 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/assertion-protocol/assertion-evaluation.js +6 -0
- package/assertion-protocol/assertion-evaluation.js.map +1 -0
- package/assertion-protocol/assertion-node.js +33 -0
- package/assertion-protocol/assertion-node.js.map +1 -0
- package/assertion-protocol/assertion-reference.js +49 -0
- package/assertion-protocol/assertion-reference.js.map +1 -0
- package/assertion-protocol/assertions/boolean.js +12 -0
- package/assertion-protocol/assertions/boolean.js.map +1 -0
- package/assertion-protocol/assertions/collection.js +21 -0
- package/assertion-protocol/assertions/collection.js.map +1 -0
- package/assertion-protocol/assertions/dispatch.js +47 -0
- package/assertion-protocol/assertions/dispatch.js.map +1 -0
- package/assertion-protocol/assertions/equality.js +24 -0
- package/assertion-protocol/assertions/equality.js.map +1 -0
- package/assertion-protocol/assertions/fail.js +8 -0
- package/assertion-protocol/assertions/fail.js.map +1 -0
- package/assertion-protocol/assertions/numeric.js +43 -0
- package/assertion-protocol/assertions/numeric.js.map +1 -0
- package/assertion-protocol/assertions/partial.js +17 -0
- package/assertion-protocol/assertions/partial.js.map +1 -0
- package/assertion-protocol/assertions/presence.js +20 -0
- package/assertion-protocol/assertions/presence.js.map +1 -0
- package/assertion-protocol/assertions/string.js +33 -0
- package/assertion-protocol/assertions/string.js.map +1 -0
- package/assertion-protocol/assertions/type-shape.js +43 -0
- package/assertion-protocol/assertions/type-shape.js.map +1 -0
- package/assertion-protocol/collection-count.js +42 -0
- package/assertion-protocol/collection-count.js.map +1 -0
- package/assertion-protocol/evaluation.js +170 -0
- package/assertion-protocol/evaluation.js.map +1 -0
- package/assertion-protocol/partial-matching.js +13 -0
- package/assertion-protocol/partial-matching.js.map +1 -0
- package/assertion-protocol/source-location.js +76 -0
- package/assertion-protocol/source-location.js.map +1 -0
- package/assertion-protocol/thrown-error-record.js +17 -0
- package/assertion-protocol/thrown-error-record.js.map +1 -0
- package/assertion-protocol/thrown-matcher.js +201 -0
- package/assertion-protocol/thrown-matcher.js.map +1 -0
- package/compare/comparison-result.js +47 -0
- package/compare/comparison-result.js.map +1 -0
- package/compare/comparison-state.js +20 -0
- package/compare/comparison-state.js.map +1 -0
- package/compare/comparison.js +78 -0
- package/compare/comparison.js.map +1 -0
- package/compare/diff-path.js +37 -0
- package/compare/diff-path.js.map +1 -0
- package/compare/raw-comparison.js +285 -0
- package/compare/raw-comparison.js.map +1 -0
- package/compare/serialized-value-classification.js +99 -0
- package/compare/serialized-value-classification.js.map +1 -0
- package/compare/serialized-value-shape.js +12 -0
- package/compare/serialized-value-shape.js.map +1 -0
- package/compare/serialized-value-state.js +55 -0
- package/compare/serialized-value-state.js.map +1 -0
- package/compare/serialized-value.js +387 -0
- package/compare/serialized-value.js.map +1 -0
- package/compare/structured-diff.js +382 -0
- package/compare/structured-diff.js.map +1 -0
- package/compare/value-classification.js +112 -0
- package/compare/value-classification.js.map +1 -0
- package/diff/binary-diff.js +49 -0
- package/diff/binary-diff.js.map +1 -0
- package/diff/string-diff.js +22 -0
- package/diff/string-diff.js.map +1 -0
- package/engine/assertion-facade.js +361 -0
- package/engine/assertion-facade.js.map +1 -0
- package/engine/case-execution.js +408 -0
- package/engine/case-execution.js.map +1 -0
- package/engine/custom-assertion-recording.js +175 -0
- package/engine/custom-assertion-recording.js.map +1 -0
- package/engine/execution.d.ts +20 -0
- package/engine/execution.d.ts.map +1 -0
- package/engine/execution.js +323 -0
- package/engine/execution.js.map +1 -0
- package/engine/identity.js +5 -0
- package/engine/identity.js.map +1 -0
- package/engine/reporter-event-queue.js +23 -0
- package/engine/reporter-event-queue.js.map +1 -0
- package/engine/reporter.d.ts +5 -0
- package/engine/reporter.d.ts.map +1 -1
- package/engine/reporter.js +177 -0
- package/engine/reporter.js.map +1 -0
- package/engine/require-assertion-facade.js +127 -0
- package/engine/require-assertion-facade.js.map +1 -0
- package/engine/run-result.js +13 -0
- package/engine/run-result.js.map +1 -0
- package/engine/test-node.d.ts +17 -1
- package/engine/test-node.d.ts.map +1 -1
- package/engine/test-plan.d.ts +8 -2
- package/engine/test-plan.d.ts.map +1 -1
- package/package.json +8 -3
- package/packages/engine/assertion-protocol.entry-point.js +4 -0
- package/packages/engine/assertion-protocol.entry-point.js.map +1 -0
- package/packages/run/run.entry-point.d.ts +2 -1
- package/packages/run/run.entry-point.d.ts.map +1 -1
- package/packages/run/run.entry-point.js +1 -0
- package/packages/run/run.entry-point.js.map +1 -1
- package/readme.md +7 -2
- package/run/run.d.ts +87 -36
- package/run/run.d.ts.map +1 -1
- package/run/run.js +182 -8
- package/run/run.js.map +1 -1
- package/sbom.cdx.json +22 -5
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
import { runTestCase } from "./case-execution.js";
|
|
2
|
+
import { caseIdentityKey } from "./identity.js";
|
|
3
|
+
import { validateReporterSinks } from "./reporter.js";
|
|
4
|
+
import { createReporterEventQueue } from "./reporter-event-queue.js";
|
|
5
|
+
import { verdictFromOutcome } from "./run-result.js";
|
|
6
|
+
const epoch = new Date(0);
|
|
7
|
+
async function reportTestStart(testCase, attempt, reporters, dependencies) {
|
|
8
|
+
return await dependencies.reporterDispatcher.reportEvent(reporters, {
|
|
9
|
+
attempt,
|
|
10
|
+
case: testCase.id,
|
|
11
|
+
kind: 'test-start'
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
async function reportTestEnd(input, reporters, dependencies) {
|
|
15
|
+
return await dependencies.reporterDispatcher.reportEvent(reporters, {
|
|
16
|
+
attempt: input.attempt,
|
|
17
|
+
case: input.testCase.id,
|
|
18
|
+
kind: 'test-end',
|
|
19
|
+
outcome: input.result.outcome,
|
|
20
|
+
verdict: input.result.verdict,
|
|
21
|
+
wallTimeMs: input.wallTimeMs
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
async function executeCase(testCase, attempt, reporters, dependencies) {
|
|
25
|
+
const startErrors = await reportTestStart(testCase, attempt, reporters, dependencies);
|
|
26
|
+
const executedCase = await runTestCase(testCase, dependencies.wallClock);
|
|
27
|
+
const endErrors = await reportTestEnd({
|
|
28
|
+
attempt,
|
|
29
|
+
result: executedCase.result,
|
|
30
|
+
testCase,
|
|
31
|
+
wallTimeMs: executedCase.wallTimeMs
|
|
32
|
+
}, reporters, dependencies);
|
|
33
|
+
return {
|
|
34
|
+
reporterErrors: [...startErrors, ...endErrors],
|
|
35
|
+
result: executedCase.result
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
function hasFailed(testResult) {
|
|
39
|
+
return testResult.outcome.kind === 'fail';
|
|
40
|
+
}
|
|
41
|
+
function isInconclusive(testResult) {
|
|
42
|
+
return testResult.outcome.kind === 'inconclusive';
|
|
43
|
+
}
|
|
44
|
+
function hasPassed(testResult) {
|
|
45
|
+
return testResult.outcome.kind === 'pass';
|
|
46
|
+
}
|
|
47
|
+
function wasSkipped(testResult) {
|
|
48
|
+
return testResult.outcome.kind === 'skip';
|
|
49
|
+
}
|
|
50
|
+
function countOutcomes(testPlan, perTest) {
|
|
51
|
+
return {
|
|
52
|
+
defined: testPlan.defined,
|
|
53
|
+
discovered: testPlan.discoveredCases.length,
|
|
54
|
+
failed: perTest.filter(hasFailed).length,
|
|
55
|
+
inconclusive: perTest.filter(isInconclusive).length,
|
|
56
|
+
passed: perTest.filter(hasPassed).length,
|
|
57
|
+
planned: testPlan.cases.length,
|
|
58
|
+
skipped: perTest.filter(wasSkipped).length
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
function suiteKey(suitePath) {
|
|
62
|
+
return suitePath.join(' > ');
|
|
63
|
+
}
|
|
64
|
+
function emptySuiteRunCounts() {
|
|
65
|
+
return { discovered: 0, executed: 0, planned: 0 };
|
|
66
|
+
}
|
|
67
|
+
function incrementSuiteRunCounts(counts, field) {
|
|
68
|
+
return {
|
|
69
|
+
discovered: counts.discovered + (field === 'discovered' ? 1 : 0),
|
|
70
|
+
executed: counts.executed + (field === 'executed' ? 1 : 0),
|
|
71
|
+
planned: counts.planned + (field === 'planned' ? 1 : 0)
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
function countSuitePath(counts, suitePath, field) {
|
|
75
|
+
let updatedCounts = counts;
|
|
76
|
+
for (let pathLength = 1; pathLength <= suitePath.length; pathLength += 1) {
|
|
77
|
+
const key = suiteKey(suitePath.slice(0, pathLength));
|
|
78
|
+
updatedCounts = {
|
|
79
|
+
...updatedCounts,
|
|
80
|
+
[key]: incrementSuiteRunCounts(updatedCounts[key] ?? emptySuiteRunCounts(), field)
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
return updatedCounts;
|
|
84
|
+
}
|
|
85
|
+
function countSuites(testPlan, perTest) {
|
|
86
|
+
let counts = {};
|
|
87
|
+
const executedIds = new Set(perTest.map(function toId(result) {
|
|
88
|
+
return caseIdentityKey(result.id);
|
|
89
|
+
}));
|
|
90
|
+
for (const testCase of testPlan.discoveredCases) {
|
|
91
|
+
counts = countSuitePath(counts, testCase.suitePath, 'discovered');
|
|
92
|
+
}
|
|
93
|
+
for (const testCase of testPlan.cases) {
|
|
94
|
+
counts = countSuitePath(counts, testCase.suitePath, 'planned');
|
|
95
|
+
if (executedIds.has(caseIdentityKey(testCase.id))) {
|
|
96
|
+
counts = countSuitePath(counts, testCase.suitePath, 'executed');
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return counts;
|
|
100
|
+
}
|
|
101
|
+
function commonSuitePrefixLength(firstSuitePath, secondSuitePath) {
|
|
102
|
+
const shortestLength = Math.min(firstSuitePath.length, secondSuitePath.length);
|
|
103
|
+
let prefixLength = 0;
|
|
104
|
+
while (prefixLength < shortestLength && firstSuitePath[prefixLength] === secondSuitePath[prefixLength]) {
|
|
105
|
+
prefixLength += 1;
|
|
106
|
+
}
|
|
107
|
+
return prefixLength;
|
|
108
|
+
}
|
|
109
|
+
async function reportSuiteTransition(reporters, dependencies, currentSuitePath, nextSuitePath) {
|
|
110
|
+
let reporterErrors = [];
|
|
111
|
+
const sharedPrefixLength = commonSuitePrefixLength(currentSuitePath, nextSuitePath);
|
|
112
|
+
for (let pathLength = currentSuitePath.length; pathLength > sharedPrefixLength; pathLength -= 1) {
|
|
113
|
+
reporterErrors = [
|
|
114
|
+
...reporterErrors,
|
|
115
|
+
...await dependencies.reporterDispatcher.reportEvent(reporters, {
|
|
116
|
+
kind: 'suite-end',
|
|
117
|
+
suitePath: currentSuitePath.slice(0, pathLength)
|
|
118
|
+
})
|
|
119
|
+
];
|
|
120
|
+
}
|
|
121
|
+
for (let pathLength = sharedPrefixLength + 1; pathLength <= nextSuitePath.length; pathLength += 1) {
|
|
122
|
+
reporterErrors = [
|
|
123
|
+
...reporterErrors,
|
|
124
|
+
...await dependencies.reporterDispatcher.reportEvent(reporters, {
|
|
125
|
+
kind: 'suite-start',
|
|
126
|
+
suitePath: nextSuitePath.slice(0, pathLength)
|
|
127
|
+
})
|
|
128
|
+
];
|
|
129
|
+
}
|
|
130
|
+
return reporterErrors;
|
|
131
|
+
}
|
|
132
|
+
async function executeTestPlanCases(testPlan, reporters, dependencies) {
|
|
133
|
+
let perTest = [];
|
|
134
|
+
let reporterErrors = [];
|
|
135
|
+
let currentSuitePath = [];
|
|
136
|
+
for (const testCase of testPlan.cases) {
|
|
137
|
+
const suiteErrors = await reportSuiteTransition(reporters, dependencies, currentSuitePath, testCase.suitePath);
|
|
138
|
+
currentSuitePath = testCase.suitePath;
|
|
139
|
+
const testRun = await executeCase(testCase, 0, reporters, dependencies);
|
|
140
|
+
reporterErrors = [...reporterErrors, ...suiteErrors, ...testRun.reporterErrors];
|
|
141
|
+
perTest = [...perTest, testRun.result];
|
|
142
|
+
}
|
|
143
|
+
return {
|
|
144
|
+
perTest,
|
|
145
|
+
reporterErrors: [
|
|
146
|
+
...reporterErrors,
|
|
147
|
+
...await reportSuiteTransition(reporters, dependencies, currentSuitePath, [])
|
|
148
|
+
]
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
function describeUnexpectedCaseError(error) {
|
|
152
|
+
if (error instanceof Error) {
|
|
153
|
+
return error.message;
|
|
154
|
+
}
|
|
155
|
+
return 'Unknown test execution error.';
|
|
156
|
+
}
|
|
157
|
+
function createInconclusiveCaseResult(testCase, error) {
|
|
158
|
+
const outcome = {
|
|
159
|
+
kind: 'inconclusive',
|
|
160
|
+
reason: `Test execution failed before producing a result: ${describeUnexpectedCaseError(error)}`
|
|
161
|
+
};
|
|
162
|
+
return {
|
|
163
|
+
id: testCase.id,
|
|
164
|
+
outcome,
|
|
165
|
+
verdict: verdictFromOutcome(outcome)
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
async function executeConcurrentCaseBody(testCase, dependencies) {
|
|
169
|
+
try {
|
|
170
|
+
const executedCase = await runTestCase(testCase, dependencies.wallClock);
|
|
171
|
+
return {
|
|
172
|
+
result: executedCase.result,
|
|
173
|
+
wallTimeMs: executedCase.wallTimeMs
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
catch (error) {
|
|
177
|
+
return {
|
|
178
|
+
result: createInconclusiveCaseResult(testCase, error),
|
|
179
|
+
wallTimeMs: 0
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
async function reportConcurrentCaseStarts(testPlan, reporters, dependencies) {
|
|
184
|
+
let reporterErrors = [];
|
|
185
|
+
let currentSuitePath = [];
|
|
186
|
+
for (const testCase of testPlan.cases) {
|
|
187
|
+
const suiteErrors = await reportSuiteTransition(reporters, dependencies, currentSuitePath, testCase.suitePath);
|
|
188
|
+
const startErrors = await reportTestStart(testCase, 0, reporters, dependencies);
|
|
189
|
+
currentSuitePath = testCase.suitePath;
|
|
190
|
+
reporterErrors = [...reporterErrors, ...suiteErrors, ...startErrors];
|
|
191
|
+
}
|
|
192
|
+
return [
|
|
193
|
+
...reporterErrors,
|
|
194
|
+
...await reportSuiteTransition(reporters, dependencies, currentSuitePath, [])
|
|
195
|
+
];
|
|
196
|
+
}
|
|
197
|
+
async function reportConcurrentCaseEnd(testCase, executedCase, reportQueue) {
|
|
198
|
+
return await reportQueue.report({
|
|
199
|
+
attempt: 0,
|
|
200
|
+
case: testCase.id,
|
|
201
|
+
kind: 'test-end',
|
|
202
|
+
outcome: executedCase.result.outcome,
|
|
203
|
+
verdict: executedCase.result.verdict,
|
|
204
|
+
wallTimeMs: executedCase.wallTimeMs
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
async function executeConcurrentCases(testPlan, reportQueue, dependencies) {
|
|
208
|
+
const endReporterErrors = [];
|
|
209
|
+
const caseExecutions = testPlan.cases.map(async function executeCaseConcurrently(testCase) {
|
|
210
|
+
const executedCase = await executeConcurrentCaseBody(testCase, dependencies);
|
|
211
|
+
endReporterErrors.push(...await reportConcurrentCaseEnd(testCase, executedCase, reportQueue));
|
|
212
|
+
return executedCase;
|
|
213
|
+
});
|
|
214
|
+
const executedCases = await Promise.all(caseExecutions);
|
|
215
|
+
return {
|
|
216
|
+
endReporterErrors,
|
|
217
|
+
perTest: executedCases.map(function toPerTest(executedCase) {
|
|
218
|
+
return executedCase.result;
|
|
219
|
+
})
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
async function executeConcurrentTestPlanCases(testPlan, reporters, dependencies) {
|
|
223
|
+
const reporterErrors = await reportConcurrentCaseStarts(testPlan, reporters, dependencies);
|
|
224
|
+
const concurrentCaseExecution = await executeConcurrentCases(testPlan, createReporterEventQueue(reporters, dependencies), dependencies);
|
|
225
|
+
return {
|
|
226
|
+
perTest: concurrentCaseExecution.perTest,
|
|
227
|
+
reporterErrors: [...reporterErrors, ...concurrentCaseExecution.endReporterErrors]
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
async function executeTestPlanCasesWithMode(testPlan, options, dependencies) {
|
|
231
|
+
if (options.execution.mode === 'concurrent-in-process') {
|
|
232
|
+
return await executeConcurrentTestPlanCases(testPlan, options.reporters, dependencies);
|
|
233
|
+
}
|
|
234
|
+
return await executeTestPlanCases(testPlan, options.reporters, dependencies);
|
|
235
|
+
}
|
|
236
|
+
function createRunResult(testPlan, perTest, reporterErrors, timing) {
|
|
237
|
+
const result = {
|
|
238
|
+
artifacts: [],
|
|
239
|
+
bySuite: countSuites(testPlan, perTest),
|
|
240
|
+
orphans: testPlan.orphans,
|
|
241
|
+
perTest,
|
|
242
|
+
runnerErrors: reporterErrors,
|
|
243
|
+
summary: countOutcomes(testPlan, perTest),
|
|
244
|
+
wallTimeMs: timing.wallClock.currentTimestampInMilliseconds - timing.startedAtMs
|
|
245
|
+
};
|
|
246
|
+
return result;
|
|
247
|
+
}
|
|
248
|
+
function appendRunnerErrors(result, runnerErrors) {
|
|
249
|
+
if (runnerErrors.length === 0) {
|
|
250
|
+
return result;
|
|
251
|
+
}
|
|
252
|
+
return {
|
|
253
|
+
...result,
|
|
254
|
+
runnerErrors: [...result.runnerErrors, ...runnerErrors]
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
function executeOptionsWithDefaults(options) {
|
|
258
|
+
return options ?? {
|
|
259
|
+
execution: { mode: 'serial-in-process' },
|
|
260
|
+
reporters: [],
|
|
261
|
+
runFacts: {},
|
|
262
|
+
startedAt: epoch.toISOString()
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
function createReporterDisposal(reporters, dependencies) {
|
|
266
|
+
let reportersDisposed = false;
|
|
267
|
+
return {
|
|
268
|
+
async disposeOnce() {
|
|
269
|
+
if (reportersDisposed) {
|
|
270
|
+
return [];
|
|
271
|
+
}
|
|
272
|
+
reportersDisposed = true;
|
|
273
|
+
return await dependencies.reporterDispatcher.disposeReporters(reporters);
|
|
274
|
+
}
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
async function createRunResultBeforeRunEnd(testPlan, options, dependencies) {
|
|
278
|
+
const startedAtMs = dependencies.wallClock.currentTimestampInMilliseconds;
|
|
279
|
+
const startErrors = await dependencies.reporterDispatcher.reportEvent(options.reporters, {
|
|
280
|
+
facts: options.runFacts,
|
|
281
|
+
kind: 'run-start',
|
|
282
|
+
root: testPlan.root,
|
|
283
|
+
startedAt: options.startedAt
|
|
284
|
+
});
|
|
285
|
+
const executedTestPlan = await executeTestPlanCasesWithMode(testPlan, options, dependencies);
|
|
286
|
+
const reporterErrors = [...startErrors, ...executedTestPlan.reporterErrors];
|
|
287
|
+
return createRunResult(testPlan, executedTestPlan.perTest, reporterErrors, {
|
|
288
|
+
startedAtMs,
|
|
289
|
+
wallClock: dependencies.wallClock
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
async function executeRun(testPlan, options, dependencies, reporterDisposal) {
|
|
293
|
+
validateReporterSinks(options.reporters);
|
|
294
|
+
const result = await createRunResultBeforeRunEnd(testPlan, options, dependencies);
|
|
295
|
+
const runEndErrors = await dependencies.reporterDispatcher.reportEvent(options.reporters, {
|
|
296
|
+
kind: 'run-end',
|
|
297
|
+
result
|
|
298
|
+
});
|
|
299
|
+
const resultForFinalReporting = appendRunnerErrors(result, runEndErrors);
|
|
300
|
+
const finalReporterErrors = await dependencies.reporterDispatcher.reportResult(options.reporters, resultForFinalReporting);
|
|
301
|
+
const disposeErrors = await reporterDisposal.disposeOnce();
|
|
302
|
+
return appendRunnerErrors(resultForFinalReporting, [...finalReporterErrors, ...disposeErrors]);
|
|
303
|
+
}
|
|
304
|
+
async function throwWithCleanupErrors(error, reporterDisposal) {
|
|
305
|
+
const disposeErrors = await reporterDisposal.disposeOnce();
|
|
306
|
+
if (disposeErrors.length > 0) {
|
|
307
|
+
throw new AggregateError([error, ...disposeErrors], 'Execution failed and reporter cleanup failed.', { cause: error });
|
|
308
|
+
}
|
|
309
|
+
throw error;
|
|
310
|
+
}
|
|
311
|
+
export function createExecute(dependencies) {
|
|
312
|
+
return async function execute(testPlan, options) {
|
|
313
|
+
const executeOptions = executeOptionsWithDefaults(options);
|
|
314
|
+
const reporterDisposal = createReporterDisposal(executeOptions.reporters, dependencies);
|
|
315
|
+
try {
|
|
316
|
+
return await executeRun(testPlan, executeOptions, dependencies, reporterDisposal);
|
|
317
|
+
}
|
|
318
|
+
catch (error) {
|
|
319
|
+
return await throwWithCleanupErrors(error, reporterDisposal);
|
|
320
|
+
}
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
//# sourceMappingURL=execution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution.js","sourceRoot":"","sources":["../../../../source/engine/execution.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../../../../source/engine/identity.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,OAAuC,QASxB,CAAC,MAAc;IAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,CAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAE,CAAC,CAAC;AACrF,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
async function waitForPreviousReport(previousReport) {
|
|
2
|
+
try {
|
|
3
|
+
await previousReport;
|
|
4
|
+
}
|
|
5
|
+
catch {
|
|
6
|
+
return undefined;
|
|
7
|
+
}
|
|
8
|
+
return undefined;
|
|
9
|
+
}
|
|
10
|
+
export function createReporterEventQueue(reporters, dependencies) {
|
|
11
|
+
let previousReport = Promise.resolve([]);
|
|
12
|
+
return {
|
|
13
|
+
async report(event) {
|
|
14
|
+
const report = (async function reportEventAfterPreviousReport() {
|
|
15
|
+
await waitForPreviousReport(previousReport);
|
|
16
|
+
return await dependencies.reporterDispatcher.reportEvent(reporters, event);
|
|
17
|
+
})();
|
|
18
|
+
previousReport = report;
|
|
19
|
+
return await report;
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=reporter-event-queue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reporter-event-queue.js","sourceRoot":"","sources":["../../../../source/engine/reporter-event-queue.ts"],"names":[],"mappings":"AAWA,KAAK,UAAU,qBAAqB,CAAC,cAA+C;IAChF,IAAI,CAAC;QACD,MAAM,cAAc,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,wBAAwB,CACpC,SAA8B,EAC9B,YAA4C;IAE5C,IAAI,cAAc,GAAG,OAAO,CAAC,OAAO,CAAyB,EAAE,CAAC,CAAC;IAEjE,OAAO;QACH,KAAK,CAAC,MAAM,CAAC,KAAK;YACd,MAAM,MAAM,GAAG,CAAC,KAAK,UAAU,8BAA8B;gBACzD,MAAM,qBAAqB,CAAC,cAAc,CAAC,CAAC;gBAE5C,OAAO,MAAM,YAAY,CAAC,kBAAkB,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC/E,CAAC,CAAC,EAAE,CAAC;YACL,cAAc,GAAG,MAAM,CAAC;YAExB,OAAO,MAAM,MAAM,CAAC;QACxB,CAAC;KACJ,CAAC;AACN,CAAC"}
|
package/engine/reporter.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { WallClock } from '@enormora/wall-clock';
|
|
2
2
|
import type { CaseId } from './identity.ts';
|
|
3
3
|
import type { RunResult, RunnerError, TestOutcome } from './run-result.ts';
|
|
4
|
+
import type { Metadata } from './test-node.ts';
|
|
4
5
|
export type RunFacts = Readonly<Record<string, unknown>>;
|
|
5
6
|
export type StandardOutputSinkDeclaration = {
|
|
6
7
|
readonly conflictPolicy: 'exclusive' | 'shared';
|
|
@@ -32,6 +33,10 @@ export type SinkDeclaration = PrivateSinkDeclaration | ReporterSinkDeclaration;
|
|
|
32
33
|
type RunStartReporterEvent = {
|
|
33
34
|
readonly facts: RunFacts;
|
|
34
35
|
readonly kind: 'run-start';
|
|
36
|
+
readonly root: {
|
|
37
|
+
readonly metadata: Metadata;
|
|
38
|
+
readonly name: string;
|
|
39
|
+
};
|
|
35
40
|
readonly startedAt: string;
|
|
36
41
|
};
|
|
37
42
|
type RunEndReporterEvent = {
|
package/engine/reporter.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../../../../source/engine/reporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../../../../source/engine/reporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
const callbackTimeoutMs = 100;
|
|
2
|
+
function standardOutputSinkKey(sink) {
|
|
3
|
+
return `standard-output:${sink.kind}`;
|
|
4
|
+
}
|
|
5
|
+
function pathSinkKey(sink) {
|
|
6
|
+
return `path:${sink.path}`;
|
|
7
|
+
}
|
|
8
|
+
function validateStandardOutputSink(claimedSinks, sink) {
|
|
9
|
+
const key = standardOutputSinkKey(sink);
|
|
10
|
+
const existingSink = claimedSinks.get(key);
|
|
11
|
+
if (existingSink !== undefined &&
|
|
12
|
+
(existingSink.conflictPolicy === 'exclusive' || sink.conflictPolicy === 'exclusive')) {
|
|
13
|
+
throw new TypeError(`Reporter sink conflict: ${sink.kind} is claimed exclusively.`);
|
|
14
|
+
}
|
|
15
|
+
const updatedSinks = new Map(claimedSinks);
|
|
16
|
+
return updatedSinks.set(key, {
|
|
17
|
+
conflictPolicy: sink.conflictPolicy
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
function validatePathSink(claimedSinks, sink) {
|
|
21
|
+
const key = pathSinkKey(sink);
|
|
22
|
+
if (claimedSinks.has(key)) {
|
|
23
|
+
throw new TypeError(`Reporter sink conflict: path "${sink.path}" is claimed by multiple reporters.`);
|
|
24
|
+
}
|
|
25
|
+
const updatedSinks = new Map(claimedSinks);
|
|
26
|
+
return updatedSinks.set(key, {
|
|
27
|
+
conflictPolicy: sink.conflictPolicy
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
function validateReporterSink(claimedSinks, sink) {
|
|
31
|
+
if (sink.kind === 'stdout' || sink.kind === 'stderr') {
|
|
32
|
+
return validateStandardOutputSink(claimedSinks, sink);
|
|
33
|
+
}
|
|
34
|
+
if (sink.kind === 'file' || sink.kind === 'directory') {
|
|
35
|
+
return validatePathSink(claimedSinks, sink);
|
|
36
|
+
}
|
|
37
|
+
return claimedSinks;
|
|
38
|
+
}
|
|
39
|
+
export function validateReporterSinks(reporters) {
|
|
40
|
+
let claimedSinks = new Map();
|
|
41
|
+
for (const reporter of reporters) {
|
|
42
|
+
for (const sink of reporter.sinks) {
|
|
43
|
+
claimedSinks = validateReporterSink(claimedSinks, sink);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function formatReporterError(reporter, cause) {
|
|
48
|
+
const reason = cause instanceof Error ? cause.message : String(cause);
|
|
49
|
+
return {
|
|
50
|
+
attributedTo: null,
|
|
51
|
+
cause,
|
|
52
|
+
message: `${reporter.name}: ${reason}`,
|
|
53
|
+
subtype: 'reporter'
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
function timeoutError(reporter) {
|
|
57
|
+
return new Error(`${reporter.name} reporter callback timed out after ${callbackTimeoutMs} ms.`);
|
|
58
|
+
}
|
|
59
|
+
async function runReporterCallback(callback) {
|
|
60
|
+
await callback();
|
|
61
|
+
}
|
|
62
|
+
export function createReporterDispatcher(dependencies) {
|
|
63
|
+
const { wallClock } = dependencies;
|
|
64
|
+
function createReporterTimeout(reporter) {
|
|
65
|
+
const { promise, reject } = Promise.withResolvers();
|
|
66
|
+
const timeout = wallClock.setTimeout(function rejectTimedOutCallback() {
|
|
67
|
+
reject(timeoutError(reporter));
|
|
68
|
+
}, callbackTimeoutMs);
|
|
69
|
+
return {
|
|
70
|
+
cancel() {
|
|
71
|
+
wallClock.clearTimeout(timeout);
|
|
72
|
+
},
|
|
73
|
+
promise
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
async function awaitReporterCallback(reporter, callback) {
|
|
77
|
+
const reporterTimeout = createReporterTimeout(reporter);
|
|
78
|
+
try {
|
|
79
|
+
await Promise.race([runReporterCallback(callback), reporterTimeout.promise]);
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
return formatReporterError(reporter, error);
|
|
84
|
+
}
|
|
85
|
+
finally {
|
|
86
|
+
reporterTimeout.cancel();
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
async function reportEventToReporter(reporter, event) {
|
|
90
|
+
const error = await awaitReporterCallback(reporter, function sendReporterEvent() {
|
|
91
|
+
return reporter.onEvent(event);
|
|
92
|
+
});
|
|
93
|
+
if (error === null) {
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
return { error, reporter };
|
|
97
|
+
}
|
|
98
|
+
async function reportRunnerErrorToOtherReporters(reporters, failedReporter, error) {
|
|
99
|
+
const event = { error, kind: 'runner-error' };
|
|
100
|
+
const failures = await Promise.all(reporters.map(async function reportRunnerError(reporter) {
|
|
101
|
+
if (reporter.kind !== 'real-time' || reporter === failedReporter) {
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
return reportEventToReporter(reporter, event);
|
|
105
|
+
}));
|
|
106
|
+
return failures.flatMap(function collectFailure(failure) {
|
|
107
|
+
return failure === null ? [] : [failure.error];
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
async function collectReporterErrorsWithNotifications(reporters, reporterErrors) {
|
|
111
|
+
const notificationErrors = await Promise.all(reporterErrors.map(async function reportError(failure) {
|
|
112
|
+
return reportRunnerErrorToOtherReporters(reporters, failure.reporter, failure.error);
|
|
113
|
+
}));
|
|
114
|
+
return [
|
|
115
|
+
...reporterErrors.map(function toError(failure) {
|
|
116
|
+
return failure.error;
|
|
117
|
+
}),
|
|
118
|
+
...notificationErrors.flat()
|
|
119
|
+
];
|
|
120
|
+
}
|
|
121
|
+
async function reportEvent(reporters, event) {
|
|
122
|
+
const failures = await Promise.all(reporters.map(async function reportRealTimeEvent(reporter) {
|
|
123
|
+
if (reporter.kind !== 'real-time') {
|
|
124
|
+
return null;
|
|
125
|
+
}
|
|
126
|
+
return reportEventToReporter(reporter, event);
|
|
127
|
+
}));
|
|
128
|
+
const reporterErrors = failures.flatMap(function collectFailure(failure) {
|
|
129
|
+
return failure === null ? [] : [failure];
|
|
130
|
+
});
|
|
131
|
+
if (event.kind === 'runner-error') {
|
|
132
|
+
return reporterErrors.map(function toError(failure) {
|
|
133
|
+
return failure.error;
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
return collectReporterErrorsWithNotifications(reporters, reporterErrors);
|
|
137
|
+
}
|
|
138
|
+
async function reportResult(reporters, result) {
|
|
139
|
+
const failures = await Promise.all(reporters.map(async function reportFinalResult(reporter) {
|
|
140
|
+
if (reporter.kind === 'final-result') {
|
|
141
|
+
const error = await awaitReporterCallback(reporter, function reportResultToFinalReporter() {
|
|
142
|
+
return reporter.onResult(result);
|
|
143
|
+
});
|
|
144
|
+
return error === null ? null : { error, reporter };
|
|
145
|
+
}
|
|
146
|
+
if (reporter.onFinish === null) {
|
|
147
|
+
return null;
|
|
148
|
+
}
|
|
149
|
+
const { onFinish } = reporter;
|
|
150
|
+
const error = await awaitReporterCallback(reporter, function reportResultToRealTimeReporter() {
|
|
151
|
+
return onFinish(result);
|
|
152
|
+
});
|
|
153
|
+
return error === null ? null : { error, reporter };
|
|
154
|
+
}));
|
|
155
|
+
const reporterErrors = failures.flatMap(function collectFailure(failure) {
|
|
156
|
+
return failure === null ? [] : [failure];
|
|
157
|
+
});
|
|
158
|
+
return collectReporterErrorsWithNotifications(reporters, reporterErrors);
|
|
159
|
+
}
|
|
160
|
+
async function disposeReporters(reporters) {
|
|
161
|
+
const failures = await Promise.all(reporters.map(async function disposeReporter(reporter) {
|
|
162
|
+
if (reporter.dispose === null) {
|
|
163
|
+
return null;
|
|
164
|
+
}
|
|
165
|
+
const { dispose } = reporter;
|
|
166
|
+
const error = await awaitReporterCallback(reporter, function disposeReporterResources() {
|
|
167
|
+
return dispose();
|
|
168
|
+
});
|
|
169
|
+
return error === null ? null : { error, reporter };
|
|
170
|
+
}));
|
|
171
|
+
return failures.flatMap(function collectFailure(failure) {
|
|
172
|
+
return failure === null ? [] : [failure.error];
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
return { disposeReporters, reportEvent, reportResult };
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=reporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../../../source/engine/reporter.ts"],"names":[],"mappings":"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"}
|