@overkill-dev/run 0.0.4 → 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.
Files changed (97) hide show
  1. package/assertion-protocol/assertion-evaluation.js +6 -0
  2. package/assertion-protocol/assertion-evaluation.js.map +1 -0
  3. package/assertion-protocol/assertion-node.js +33 -0
  4. package/assertion-protocol/assertion-node.js.map +1 -0
  5. package/assertion-protocol/assertion-reference.js +49 -0
  6. package/assertion-protocol/assertion-reference.js.map +1 -0
  7. package/assertion-protocol/assertions/boolean.js +12 -0
  8. package/assertion-protocol/assertions/boolean.js.map +1 -0
  9. package/assertion-protocol/assertions/collection.js +21 -0
  10. package/assertion-protocol/assertions/collection.js.map +1 -0
  11. package/assertion-protocol/assertions/dispatch.js +47 -0
  12. package/assertion-protocol/assertions/dispatch.js.map +1 -0
  13. package/assertion-protocol/assertions/equality.js +24 -0
  14. package/assertion-protocol/assertions/equality.js.map +1 -0
  15. package/assertion-protocol/assertions/fail.js +8 -0
  16. package/assertion-protocol/assertions/fail.js.map +1 -0
  17. package/assertion-protocol/assertions/numeric.js +43 -0
  18. package/assertion-protocol/assertions/numeric.js.map +1 -0
  19. package/assertion-protocol/assertions/partial.js +17 -0
  20. package/assertion-protocol/assertions/partial.js.map +1 -0
  21. package/assertion-protocol/assertions/presence.js +20 -0
  22. package/assertion-protocol/assertions/presence.js.map +1 -0
  23. package/assertion-protocol/assertions/string.js +33 -0
  24. package/assertion-protocol/assertions/string.js.map +1 -0
  25. package/assertion-protocol/assertions/type-shape.js +43 -0
  26. package/assertion-protocol/assertions/type-shape.js.map +1 -0
  27. package/assertion-protocol/collection-count.js +42 -0
  28. package/assertion-protocol/collection-count.js.map +1 -0
  29. package/assertion-protocol/evaluation.js +170 -0
  30. package/assertion-protocol/evaluation.js.map +1 -0
  31. package/assertion-protocol/partial-matching.js +13 -0
  32. package/assertion-protocol/partial-matching.js.map +1 -0
  33. package/assertion-protocol/source-location.js +76 -0
  34. package/assertion-protocol/source-location.js.map +1 -0
  35. package/assertion-protocol/thrown-error-record.js +17 -0
  36. package/assertion-protocol/thrown-error-record.js.map +1 -0
  37. package/assertion-protocol/thrown-matcher.js +201 -0
  38. package/assertion-protocol/thrown-matcher.js.map +1 -0
  39. package/compare/comparison-result.js +47 -0
  40. package/compare/comparison-result.js.map +1 -0
  41. package/compare/comparison-state.js +20 -0
  42. package/compare/comparison-state.js.map +1 -0
  43. package/compare/comparison.js +78 -0
  44. package/compare/comparison.js.map +1 -0
  45. package/compare/diff-path.js +37 -0
  46. package/compare/diff-path.js.map +1 -0
  47. package/compare/raw-comparison.js +285 -0
  48. package/compare/raw-comparison.js.map +1 -0
  49. package/compare/serialized-value-classification.js +99 -0
  50. package/compare/serialized-value-classification.js.map +1 -0
  51. package/compare/serialized-value-shape.js +12 -0
  52. package/compare/serialized-value-shape.js.map +1 -0
  53. package/compare/serialized-value-state.js +55 -0
  54. package/compare/serialized-value-state.js.map +1 -0
  55. package/compare/serialized-value.js +387 -0
  56. package/compare/serialized-value.js.map +1 -0
  57. package/compare/structured-diff.js +382 -0
  58. package/compare/structured-diff.js.map +1 -0
  59. package/compare/value-classification.js +112 -0
  60. package/compare/value-classification.js.map +1 -0
  61. package/diff/binary-diff.js +49 -0
  62. package/diff/binary-diff.js.map +1 -0
  63. package/diff/string-diff.js +22 -0
  64. package/diff/string-diff.js.map +1 -0
  65. package/engine/assertion-facade.js +361 -0
  66. package/engine/assertion-facade.js.map +1 -0
  67. package/engine/case-execution.js +408 -0
  68. package/engine/case-execution.js.map +1 -0
  69. package/engine/custom-assertion-recording.js +175 -0
  70. package/engine/custom-assertion-recording.js.map +1 -0
  71. package/engine/execution.d.ts +20 -0
  72. package/engine/execution.d.ts.map +1 -0
  73. package/engine/execution.js +323 -0
  74. package/engine/execution.js.map +1 -0
  75. package/engine/identity.js +5 -0
  76. package/engine/identity.js.map +1 -0
  77. package/engine/reporter-event-queue.js +23 -0
  78. package/engine/reporter-event-queue.js.map +1 -0
  79. package/engine/reporter.js +177 -0
  80. package/engine/reporter.js.map +1 -0
  81. package/engine/require-assertion-facade.js +127 -0
  82. package/engine/require-assertion-facade.js.map +1 -0
  83. package/engine/run-result.js +13 -0
  84. package/engine/run-result.js.map +1 -0
  85. package/package.json +8 -3
  86. package/packages/engine/assertion-protocol.entry-point.js +4 -0
  87. package/packages/engine/assertion-protocol.entry-point.js.map +1 -0
  88. package/packages/run/run.entry-point.d.ts +2 -1
  89. package/packages/run/run.entry-point.d.ts.map +1 -1
  90. package/packages/run/run.entry-point.js +1 -0
  91. package/packages/run/run.entry-point.js.map +1 -1
  92. package/readme.md +7 -2
  93. package/run/run.d.ts +87 -36
  94. package/run/run.d.ts.map +1 -1
  95. package/run/run.js +182 -8
  96. package/run/run.js.map +1 -1
  97. 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,5 @@
1
+ export function caseIdentityKey(caseId) {
2
+ return JSON.stringify([caseId.file, caseId.suite, caseId.name, caseId.params]);
3
+ }
4
+
5
+ //# sourceMappingURL=identity.js.map
@@ -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"}
@@ -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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"}