@overkill-dev/engine 0.0.31 → 0.0.32

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 (62) hide show
  1. package/compare/serialized-value.d.ts +1 -1
  2. package/compare/serialized-value.d.ts.map +1 -1
  3. package/compare/serialized-value.js +3 -3
  4. package/compare/serialized-value.js.map +1 -1
  5. package/engine/assertion-recorder.js +12 -3
  6. package/engine/assertion-recorder.js.map +1 -1
  7. package/engine/async-control.d.ts +33 -0
  8. package/engine/async-control.d.ts.map +1 -0
  9. package/engine/async-control.js +153 -0
  10. package/engine/async-control.js.map +1 -0
  11. package/engine/async-leak-diagnostics.d.ts +20 -0
  12. package/engine/async-leak-diagnostics.d.ts.map +1 -0
  13. package/engine/async-leak-diagnostics.js +157 -0
  14. package/engine/async-leak-diagnostics.js.map +1 -0
  15. package/engine/case-execution.d.ts +1 -1
  16. package/engine/case-execution.d.ts.map +1 -1
  17. package/engine/case-execution.js +127 -65
  18. package/engine/case-execution.js.map +1 -1
  19. package/engine/engine.d.ts +2 -1
  20. package/engine/engine.d.ts.map +1 -1
  21. package/engine/engine.js +3 -4
  22. package/engine/engine.js.map +1 -1
  23. package/engine/execution-async-leak-policy.d.ts +24 -0
  24. package/engine/execution-async-leak-policy.d.ts.map +1 -0
  25. package/engine/execution-async-leak-policy.js +56 -0
  26. package/engine/execution-async-leak-policy.js.map +1 -0
  27. package/engine/execution-options.d.ts +26 -0
  28. package/engine/execution-options.d.ts.map +1 -0
  29. package/engine/execution-options.js +25 -0
  30. package/engine/execution-options.js.map +1 -0
  31. package/engine/execution-resource-tracked-cases.js +35 -0
  32. package/engine/execution-resource-tracked-cases.js.map +1 -0
  33. package/engine/execution-result.js +16 -0
  34. package/engine/execution-result.js.map +1 -1
  35. package/engine/execution-supervision.js +2 -2
  36. package/engine/execution-supervision.js.map +1 -1
  37. package/engine/execution.d.ts +7 -20
  38. package/engine/execution.d.ts.map +1 -1
  39. package/engine/execution.js +49 -85
  40. package/engine/execution.js.map +1 -1
  41. package/engine/node-assertion-error.js +47 -0
  42. package/engine/node-assertion-error.js.map +1 -0
  43. package/engine/run-result.d.ts +19 -1
  44. package/engine/run-result.d.ts.map +1 -1
  45. package/engine/run-result.js.map +1 -1
  46. package/engine/test-node.d.ts +28 -1
  47. package/engine/test-node.d.ts.map +1 -1
  48. package/engine/test-node.js +24 -2
  49. package/engine/test-node.js.map +1 -1
  50. package/engine/test-plan.js +1 -1
  51. package/engine/test-plan.js.map +1 -1
  52. package/engine/test-scope-lifecycle.js +63 -0
  53. package/engine/test-scope-lifecycle.js.map +1 -0
  54. package/engine/throwing-test-scope.js +27 -0
  55. package/engine/throwing-test-scope.js.map +1 -0
  56. package/package.json +4 -2
  57. package/packages/engine/engine.entry-point.d.ts +4 -2
  58. package/packages/engine/engine.entry-point.d.ts.map +1 -1
  59. package/packages/engine/engine.entry-point.js +11 -3
  60. package/packages/engine/engine.entry-point.js.map +1 -1
  61. package/readme.md +33 -3
  62. package/sbom.cdx.json +4 -4
@@ -1,9 +1,10 @@
1
1
  import { evaluateAssertion, invalidDeepAssertionOperand } from "../assertion-protocol/evaluation.js";
2
2
  import { createThrownErrorRecord } from "../assertion-protocol/thrown-error-record.js";
3
3
  import { assertNonEmptyItems, createAssertionRecorder, isTestContractFailure, RequireFailedSignalError, TestContractSignalError } from "./assertion-recorder.js";
4
- import { createRecordingAssertFacade } from "./assertion-facade.js";
5
- import { createRecordingRequireFacade } from "./require-assertion-facade.js";
4
+ import { isNodeAssertionError, nodeAssertionErrorFailure } from "./node-assertion-error.js";
6
5
  import { invalidDeepAssertionOperandFailure, verdictFromOutcome } from "./run-result.js";
6
+ import { createTestScopeLifecycle } from "./test-scope-lifecycle.js";
7
+ import { createThrowingTestScope } from "./throwing-test-scope.js";
7
8
  function evaluatedAssertionFailure(assertions) {
8
9
  const checks = assertions.flatMap(function evaluateRecordedAssertion(assertion, index) {
9
10
  const failedCheck = evaluateAssertion(assertion, index + 1);
@@ -30,90 +31,99 @@ function assertionContractFailure(assertions) {
30
31
  function assertionFailure(assertions) {
31
32
  return assertionContractFailure(assertions) ?? evaluatedAssertionFailure(assertions);
32
33
  }
33
- function createTestScope(recorder, signal) {
34
- const assertContext = Object.assign(createRecordingAssertFacade({
35
- failContract(failure) {
36
- return recorder.failContract(failure);
37
- },
38
- recordAssert(assertion) {
39
- recorder.recordAssert(assertion);
40
- },
41
- recordPendingAssert() {
42
- return recorder.recordPendingAssert();
43
- }
44
- }, null), {
45
- collect() {
46
- return recorder.collect();
47
- }
48
- });
49
- return {
50
- assert: assertContext,
51
- plan(count) {
52
- recorder.plan(count);
53
- },
54
- require: createRecordingRequireFacade({
55
- failContract(failure) {
56
- return recorder.failContract(failure);
57
- },
58
- recordRequire(assertion) {
59
- recorder.recordRequire(assertion);
60
- }
61
- }, null),
62
- signal
63
- };
64
- }
65
- function requireFailedBody(recorder) {
34
+ function requireFailedBody(recorder, contractFailures, cleanupErrors) {
66
35
  return {
67
36
  bodyError: null,
68
- contractFailure: null,
37
+ cleanupErrors,
38
+ contractFailures,
69
39
  requireFailed: true,
70
40
  returnedAssertions: recorder.activeRecordedAssertions()
71
41
  };
72
42
  }
73
- function contractFailedBody(recorder, contractFailure) {
43
+ function contractFailedBody(recorder, contractFailures, cleanupErrors) {
74
44
  return {
75
45
  bodyError: null,
76
- contractFailure,
46
+ cleanupErrors,
47
+ contractFailures,
77
48
  requireFailed: false,
78
49
  returnedAssertions: recorder.activeRecordedAssertions()
79
50
  };
80
51
  }
81
- function bodyErrorResult(recorder, error) {
52
+ function bodyErrorResult(recorder, error, contractFailures, cleanupErrors) {
82
53
  return {
83
54
  bodyError: createThrownErrorRecord(error),
84
- contractFailure: null,
55
+ cleanupErrors,
56
+ contractFailures,
85
57
  requireFailed: false,
86
58
  returnedAssertions: recorder.activeRecordedAssertions()
87
59
  };
88
60
  }
89
- function completedBody(recorder, assertionResult) {
61
+ function nodeAssertionFailedBody(testCase, recorder, error) {
62
+ const fallbackLocation = testCase.definitionLocations[0];
63
+ return {
64
+ bodyError: null,
65
+ cleanupErrors: [],
66
+ contractFailures: [],
67
+ requireFailed: false,
68
+ returnedAssertions: [
69
+ ...recorder.activeRecordedAssertions(),
70
+ nodeAssertionErrorFailure(error, fallbackLocation)
71
+ ]
72
+ };
73
+ }
74
+ function completedBody(recorder, assertionResult, lifecycleFailures, cleanupErrors) {
90
75
  if (recorder.requireFailed()) {
91
- return requireFailedBody(recorder);
76
+ return requireFailedBody(recorder, lifecycleFailures, cleanupErrors);
92
77
  }
93
78
  const returnedAssertions = recorder.returnedAssertions(assertionResult);
79
+ if (isTestContractFailure(returnedAssertions)) {
80
+ return contractFailedBody(recorder, [returnedAssertions, ...lifecycleFailures], cleanupErrors);
81
+ }
82
+ return {
83
+ bodyError: null,
84
+ cleanupErrors,
85
+ contractFailures: lifecycleFailures,
86
+ requireFailed: false,
87
+ returnedAssertions
88
+ };
89
+ }
90
+ function completedThrowingBody(recorder) {
91
+ if (recorder.requireFailed()) {
92
+ return requireFailedBody(recorder, [], []);
93
+ }
94
+ const returnedAssertions = recorder.completedThrowingAssertions();
94
95
  return isTestContractFailure(returnedAssertions)
95
- ? contractFailedBody(recorder, returnedAssertions)
96
+ ? contractFailedBody(recorder, [returnedAssertions], [])
96
97
  : {
97
98
  bodyError: null,
98
- contractFailure: null,
99
+ cleanupErrors: [],
100
+ contractFailures: [],
99
101
  requireFailed: false,
100
102
  returnedAssertions
101
103
  };
102
104
  }
103
- function failedBody(recorder, error) {
105
+ function failedBody(input) {
106
+ const { cleanupErrors, error, lifecycleFailures, recorder, testCase } = input;
104
107
  if (error instanceof RequireFailedSignalError) {
105
- return requireFailedBody(recorder);
108
+ return requireFailedBody(recorder, lifecycleFailures, cleanupErrors);
109
+ }
110
+ if (error instanceof TestContractSignalError) {
111
+ return contractFailedBody(recorder, [error.failure(), ...lifecycleFailures], cleanupErrors);
112
+ }
113
+ if (testCase.execution.kind === 'body' &&
114
+ testCase.execution.bodyMode === 'throwing' &&
115
+ isNodeAssertionError(error)) {
116
+ return nodeAssertionFailedBody(testCase, recorder, error);
106
117
  }
107
- return error instanceof TestContractSignalError
108
- ? contractFailedBody(recorder, error.failure())
109
- : bodyErrorResult(recorder, error);
118
+ return bodyErrorResult(recorder, error, lifecycleFailures, cleanupErrors);
110
119
  }
111
- async function runCaseBody(testCase, recorder, options) {
120
+ async function runBuilderCaseBody(testCase, recorder, options) {
121
+ const lifecycle = createTestScopeLifecycle(recorder);
112
122
  const runBody = async function runUserBody() {
113
- if (testCase.execution.kind !== 'body') {
114
- throw new TypeError('Skipped test cases do not have executable bodies.');
123
+ if (testCase.execution.kind !== 'body' || testCase.execution.bodyMode !== 'builder') {
124
+ throw new TypeError('Non-builder test cases do not have builder bodies.');
115
125
  }
116
- return await testCase.execution.body(createTestScope(recorder, options.signal));
126
+ return await lifecycle.runBody(options.controller.signal, testCase.execution.body);
117
127
  };
118
128
  const runPolicyCheckedBody = async function runPolicyCheckedUserBody() {
119
129
  return options.runtimePolicy === null
@@ -121,26 +131,78 @@ async function runCaseBody(testCase, recorder, options) {
121
131
  : await options.runtimePolicy.runCase(testCase, runBody);
122
132
  };
123
133
  try {
124
- return completedBody(recorder, await runPolicyCheckedBody());
134
+ const assertionResult = await runPolicyCheckedBody();
135
+ const finishedBody = await lifecycle.finish(options.controller);
136
+ return completedBody(recorder, assertionResult, finishedBody.lifecycleFailures, finishedBody.cleanupErrors.map(createThrownErrorRecord));
125
137
  }
126
138
  catch (error) {
127
- return failedBody(recorder, error);
139
+ const finishedBody = await lifecycle.finish(options.controller);
140
+ return failedBody({
141
+ cleanupErrors: finishedBody.cleanupErrors.map(createThrownErrorRecord),
142
+ error,
143
+ lifecycleFailures: finishedBody.lifecycleFailures,
144
+ recorder,
145
+ testCase
146
+ });
128
147
  }
129
148
  }
130
- function bodyFailure(executedBody) {
131
- if (executedBody.contractFailure !== null) {
132
- return executedBody.contractFailure;
149
+ async function runThrowingCaseBody(testCase, recorder, options) {
150
+ const runBody = async function runUserBody() {
151
+ if (testCase.execution.kind !== 'body' || testCase.execution.bodyMode !== 'throwing') {
152
+ throw new TypeError('Non-throwing test cases do not have throwing bodies.');
153
+ }
154
+ await testCase.execution.body(createThrowingTestScope(recorder, options.controller.signal));
155
+ };
156
+ const runPolicyCheckedBody = async function runPolicyCheckedUserBody() {
157
+ if (options.runtimePolicy === null) {
158
+ await runBody();
159
+ return;
160
+ }
161
+ await options.runtimePolicy.runCase(testCase, runBody);
162
+ };
163
+ try {
164
+ await runPolicyCheckedBody();
165
+ return completedThrowingBody(recorder);
133
166
  }
167
+ catch (error) {
168
+ return failedBody({
169
+ cleanupErrors: [],
170
+ error,
171
+ lifecycleFailures: [],
172
+ recorder,
173
+ testCase
174
+ });
175
+ }
176
+ }
177
+ async function runCaseBody(testCase, recorder, options) {
178
+ if (testCase.execution.kind !== 'body') {
179
+ throw new TypeError('Skipped test cases do not have executable bodies.');
180
+ }
181
+ return testCase.execution.bodyMode === 'builder'
182
+ ? await runBuilderCaseBody(testCase, recorder, options)
183
+ : await runThrowingCaseBody(testCase, recorder, options);
184
+ }
185
+ function bodyFailures(executedBody) {
186
+ const failures = Array.from(executedBody.contractFailures);
134
187
  if (executedBody.bodyError !== null) {
135
- return {
188
+ failures.push({
136
189
  error: executedBody.bodyError,
137
190
  kind: 'body-error'
138
- };
191
+ });
139
192
  }
140
- return null;
193
+ for (const cleanupError of executedBody.cleanupErrors) {
194
+ failures.push({
195
+ error: cleanupError,
196
+ kind: 'cleanup-error'
197
+ });
198
+ }
199
+ return failures;
141
200
  }
142
201
  function planFailure(recorder, executedBody) {
143
- if (executedBody.requireFailed || executedBody.contractFailure !== null || executedBody.bodyError !== null) {
202
+ if (executedBody.requireFailed ||
203
+ executedBody.contractFailures.length > 0 ||
204
+ executedBody.bodyError !== null ||
205
+ executedBody.cleanupErrors.length > 0) {
144
206
  return null;
145
207
  }
146
208
  return recorder.validateAssertionCount(executedBody.returnedAssertions.length);
@@ -148,7 +210,7 @@ function planFailure(recorder, executedBody) {
148
210
  function createOutcome(recorder, executedBody) {
149
211
  const failures = [
150
212
  assertionFailure(executedBody.returnedAssertions),
151
- bodyFailure(executedBody),
213
+ ...bodyFailures(executedBody),
152
214
  planFailure(recorder, executedBody)
153
215
  ]
154
216
  .filter(function isTestFailure(failure) {
@@ -166,8 +228,8 @@ function createOutcome(recorder, executedBody) {
166
228
  function defaultRunTestCaseOptions() {
167
229
  const controller = new AbortController();
168
230
  return {
169
- runtimePolicy: null,
170
- signal: controller.signal
231
+ controller,
232
+ runtimePolicy: null
171
233
  };
172
234
  }
173
235
  export function timeoutFailure(deadlineMilliseconds, elapsedMilliseconds) {
@@ -1 +1 @@
1
- {"version":3,"file":"case-execution.js","sourceRoot":"","sources":["../../../../source/engine/case-execution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"case-execution.js","sourceRoot":"","sources":["../../../../source/engine/case-execution.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import type { WallClock } from '@enormora/wall-clock';
2
2
  import type { Execute } from './execution.ts';
3
3
  import { formatCaseId } from './identity.ts';
4
- import { type TestNodeOwner, type RootOptions, type Suite, type SkippedTestCaseOptions, type SuiteOptions, type Table, type TableOptions, type TestCase, type TestCaseOptions, type TestNode, type TestRoot } from './test-node.ts';
4
+ import { type TestNodeOwner, type RootOptions, type Suite, type SkippedTestCaseOptions, type SuiteOptions, type Table, type TableOptions, type TestCase, type TestCaseOptions, type TestNode, type TestRoot, type ThrowingTestCaseOptions } from './test-node.ts';
5
5
  import { type TestPlanFactory, type TestPlanFromTestFilesFactory } from './test-plan.ts';
6
6
  export type Engine = {
7
7
  readonly createRoot: (options: RootOptions) => TestRoot;
@@ -9,6 +9,7 @@ export type Engine = {
9
9
  readonly createSkippedTestCase: (options: SkippedTestCaseOptions) => TestCase;
10
10
  readonly createTable: (options: TableOptions) => Table;
11
11
  readonly createTestCase: (options: TestCaseOptions) => TestCase;
12
+ readonly createThrowingTestCase: (options: ThrowingTestCaseOptions) => TestCase;
12
13
  readonly createTestPlan: TestPlanFactory;
13
14
  readonly createTestPlanFromTestFiles: TestPlanFromTestFilesFactory;
14
15
  readonly execute: Execute;
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../../source/engine/engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAGH,KAAK,aAAa,EAElB,KAAK,WAAW,EAChB,KAAK,KAAK,EACV,KAAK,sBAAsB,EAC3B,KAAK,YAAY,EACjB,KAAK,KAAK,EACV,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,QAAQ,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAGH,KAAK,eAAe,EACpB,KAAK,4BAA4B,EACpC,MAAM,gBAAgB,CAAC;AAExB,MAAM,MAAM,MAAM,GAAG;IACjB,QAAQ,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,QAAQ,CAAC;IACxD,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,KAAK,CAAC;IACvD,QAAQ,CAAC,qBAAqB,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,QAAQ,CAAC;IAC9E,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,KAAK,CAAC;IACvD,QAAQ,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,QAAQ,CAAC;IAChE,QAAQ,CAAC,cAAc,EAAE,eAAe,CAAC;IACzC,QAAQ,CAAC,2BAA2B,EAAE,4BAA4B,CAAC;IACnE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,OAAO,YAAY,CAAC;IAC3C,QAAQ,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,QAAQ,CAAC;CAChE,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC7B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;CACjC,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,kBAAkB,EAAE,KAAK,EAAE,aAAa,GAAG,MAAM,CA0BpG;AAED,wBAAgB,YAAY,CAAC,YAAY,EAAE,kBAAkB,GAAG,MAAM,CAErE"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../../source/engine/engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAGH,KAAK,aAAa,EAElB,KAAK,WAAW,EAChB,KAAK,KAAK,EACV,KAAK,sBAAsB,EAC3B,KAAK,YAAY,EACjB,KAAK,KAAK,EACV,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,uBAAuB,EAC/B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAGH,KAAK,eAAe,EACpB,KAAK,4BAA4B,EACpC,MAAM,gBAAgB,CAAC;AAExB,MAAM,MAAM,MAAM,GAAG;IACjB,QAAQ,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,QAAQ,CAAC;IACxD,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,KAAK,CAAC;IACvD,QAAQ,CAAC,qBAAqB,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,QAAQ,CAAC;IAC9E,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,KAAK,CAAC;IACvD,QAAQ,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,QAAQ,CAAC;IAChE,QAAQ,CAAC,sBAAsB,EAAE,CAAC,OAAO,EAAE,uBAAuB,KAAK,QAAQ,CAAC;IAChF,QAAQ,CAAC,cAAc,EAAE,eAAe,CAAC;IACzC,QAAQ,CAAC,2BAA2B,EAAE,4BAA4B,CAAC;IACnE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,OAAO,YAAY,CAAC;IAC3C,QAAQ,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,QAAQ,CAAC;CAChE,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC7B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;CACjC,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,kBAAkB,EAAE,KAAK,EAAE,aAAa,GAAG,MAAM,CA2BpG;AAED,wBAAgB,YAAY,CAAC,YAAY,EAAE,kBAAkB,GAAG,MAAM,CAErE"}
package/engine/engine.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { formatCaseId } from "./identity.js";
2
- import { createTestNodeOwner, createTestNodeFactory, isOwnedTestNode } from "./test-node.js";
2
+ import { createTestNodeFactory, isOwnedTestNode } from "./test-node.js";
3
3
  import { createTestPlanFactory, createTestPlanFromTestFilesFactory } from "./test-plan.js";
4
4
  export function createEngineWithOwner(dependencies, owner) {
5
5
  const { execute } = dependencies;
@@ -18,6 +18,7 @@ export function createEngineWithOwner(dependencies, owner) {
18
18
  createSkippedTestCase: nodeFactory.createSkippedTestCase,
19
19
  createTable: nodeFactory.createTable,
20
20
  createTestCase: nodeFactory.createTestCase,
21
+ createThrowingTestCase: nodeFactory.createThrowingTestCase,
21
22
  createTestPlan,
22
23
  createTestPlanFromTestFiles,
23
24
  execute,
@@ -27,7 +28,5 @@ export function createEngineWithOwner(dependencies, owner) {
27
28
  }
28
29
  };
29
30
  }
30
- export function createEngine(dependencies) {
31
- return createEngineWithOwner(dependencies, createTestNodeOwner());
32
- }
31
+
33
32
  //# sourceMappingURL=engine.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../../source/engine/engine.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EACH,mBAAmB,EACnB,qBAAqB,EAErB,eAAe,EAWlB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACH,qBAAqB,EACrB,kCAAkC,EAGrC,MAAM,gBAAgB,CAAC;AAoBxB,MAAM,UAAU,qBAAqB,CAAC,YAAgC,EAAE,KAAoB;IACxF,MAAM,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC;IACjC,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAY,CAAC;IAC7C,MAAM,WAAW,GAAG,qBAAqB,CAAC;QACtC,KAAK;QACL,qBAAqB,CAAC,IAAI;YACtB,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;KACJ,CAAC,CAAC;IACH,MAAM,cAAc,GAAG,qBAAqB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACtE,MAAM,2BAA2B,GAAG,kCAAkC,CAAC,KAAK,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IAEtG,OAAO;QACH,UAAU,EAAE,WAAW,CAAC,UAAU;QAClC,WAAW,EAAE,WAAW,CAAC,WAAW;QACpC,qBAAqB,EAAE,WAAW,CAAC,qBAAqB;QACxD,WAAW,EAAE,WAAW,CAAC,WAAW;QACpC,cAAc,EAAE,WAAW,CAAC,cAAc;QAC1C,cAAc;QACd,2BAA2B;QAC3B,OAAO;QACP,YAAY;QACZ,YAAY,CAAC,KAAK;YACd,OAAO,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACzC,CAAC;KACJ,CAAC;AACN,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,YAAgC;IACzD,OAAO,qBAAqB,CAAC,YAAY,EAAE,mBAAmB,EAAE,CAAC,CAAC;AACtE,CAAC"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../../source/engine/engine.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EACH,qBACqB,EAErB,eAAe,EAYlB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACH,qBAAqB,EACrB,kCAAkC,EAGrC,MAAM,gBAAgB,CAAC;AAqBxB,MAAM,UAAU,qBAAqB,CAAC,YAAgC,EAAE,KAAoB;IACxF,MAAM,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC;IACjC,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAY,CAAC;IAC7C,MAAM,WAAW,GAAG,qBAAqB,CAAC;QACtC,KAAK;QACL,qBAAqB,CAAC,IAAI;YACtB,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;KACJ,CAAC,CAAC;IACH,MAAM,cAAc,GAAG,qBAAqB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACtE,MAAM,2BAA2B,GAAG,kCAAkC,CAAC,KAAK,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IAEtG,OAAO;QACH,UAAU,EAAE,WAAW,CAAC,UAAU;QAClC,WAAW,EAAE,WAAW,CAAC,WAAW;QACpC,qBAAqB,EAAE,WAAW,CAAC,qBAAqB;QACxD,WAAW,EAAE,WAAW,CAAC,WAAW;QACpC,cAAc,EAAE,WAAW,CAAC,cAAc;QAC1C,sBAAsB,EAAE,WAAW,CAAC,sBAAsB;QAC1D,cAAc;QACd,2BAA2B;QAC3B,OAAO;QACP,YAAY;QACZ,YAAY,CAAC,KAAK;YACd,OAAO,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACzC,CAAC;KACJ,CAAC;AACN,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { type AsyncLeakMonitor } from './async-leak-diagnostics.ts';
2
+ import type { ConcurrentCase } from './execution-supervision.ts';
3
+ import type { RunnerError } from './run-result.ts';
4
+ import type { TestPlanCase } from './test-plan.ts';
5
+ export type AsyncLeakDiagnostics = 'disabled' | 'enabled';
6
+ export type AsyncLeakDependencies = {
7
+ readonly asyncLeakMonitor: AsyncLeakMonitor;
8
+ readonly readActiveResourceTypes: () => readonly string[];
9
+ };
10
+ export type AsyncLeakCheckedCase = {
11
+ readonly executedCase: ConcurrentCase;
12
+ readonly runnerErrors: readonly RunnerError[];
13
+ };
14
+ export type CaseAsyncLeakPolicyInput = {
15
+ readonly activeResourceTypesBefore: readonly string[];
16
+ readonly dependencies: AsyncLeakDependencies;
17
+ readonly executedCase: ConcurrentCase;
18
+ readonly includeActiveResourceLeaks: boolean;
19
+ readonly testCase: TestPlanCase;
20
+ };
21
+ export declare function createExecutionAsyncLeakMonitor(diagnostics: AsyncLeakDiagnostics): AsyncLeakMonitor;
22
+ export declare function caseWithAsyncLeakPolicy(input: CaseAsyncLeakPolicyInput): Promise<AsyncLeakCheckedCase>;
23
+ export declare function concurrentRunActiveResourceLeak(dependencies: AsyncLeakDependencies, activeResourceTypesBefore: readonly string[]): RunnerError | null;
24
+ //# sourceMappingURL=execution-async-leak-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-async-leak-policy.d.ts","sourceRoot":"","sources":["../../../../source/engine/execution-async-leak-policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,KAAK,gBAAgB,EACxB,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAuB,MAAM,iBAAiB,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,SAAS,CAAC;AAE1D,MAAM,MAAM,qBAAqB,GAAG;IAChC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAC5C,QAAQ,CAAC,uBAAuB,EAAE,MAAM,SAAS,MAAM,EAAE,CAAC;CAC7D,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAC/B,QAAQ,CAAC,YAAY,EAAE,cAAc,CAAC;IACtC,QAAQ,CAAC,YAAY,EAAE,SAAS,WAAW,EAAE,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACnC,QAAQ,CAAC,yBAAyB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtD,QAAQ,CAAC,YAAY,EAAE,qBAAqB,CAAC;IAC7C,QAAQ,CAAC,YAAY,EAAE,cAAc,CAAC;IACtC,QAAQ,CAAC,0BAA0B,EAAE,OAAO,CAAC;IAC7C,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;CACnC,CAAC;AAQF,wBAAgB,+BAA+B,CAAC,WAAW,EAAE,oBAAoB,GAAG,gBAAgB,CAInG;AAqBD,wBAAsB,uBAAuB,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAiC5G;AAED,wBAAgB,+BAA+B,CAC3C,YAAY,EAAE,qBAAqB,EACnC,yBAAyB,EAAE,SAAS,MAAM,EAAE,GAC7C,WAAW,GAAG,IAAI,CAOpB"}
@@ -0,0 +1,56 @@
1
+ import { activeResourceLeakError, createAsyncLeakMonitor, createDisabledAsyncLeakMonitor } from "./async-leak-diagnostics.js";
2
+ import { settleAsyncWork } from "./async-control.js";
3
+ const promiseTrackingContractFailureCodes = new Set([
4
+ 'pending-async-assertion',
5
+ 'pending-in-flight-task',
6
+ 'unobserved-in-flight-task'
7
+ ]);
8
+ export function createExecutionAsyncLeakMonitor(diagnostics) {
9
+ return diagnostics === 'enabled'
10
+ ? createAsyncLeakMonitor()
11
+ : createDisabledAsyncLeakMonitor();
12
+ }
13
+ function runtimePolicyCase(testCase, executedCase) {
14
+ return {
15
+ result: {
16
+ id: testCase.id,
17
+ outcome: null,
18
+ verdict: 'runtime-policy'
19
+ },
20
+ wallTimeMs: executedCase.wallTimeMs
21
+ };
22
+ }
23
+ function hasPromiseTrackingContractFailure(executedCase) {
24
+ const { outcome } = executedCase.result;
25
+ return outcome?.kind === 'fail' && outcome.failures.some(function promiseTrackingFailure(failure) {
26
+ return failure.kind === 'test-contract' && promiseTrackingContractFailureCodes.has(failure.code);
27
+ });
28
+ }
29
+ export async function caseWithAsyncLeakPolicy(input) {
30
+ if (input.executedCase.result.outcome === null) {
31
+ return {
32
+ executedCase: input.executedCase,
33
+ runnerErrors: []
34
+ };
35
+ }
36
+ await settleAsyncWork();
37
+ const promiseLeakError = hasPromiseTrackingContractFailure(input.executedCase)
38
+ ? null
39
+ : input.dependencies.asyncLeakMonitor.casePromiseLeakError(input.testCase);
40
+ const activeLeakError = input.includeActiveResourceLeaks
41
+ ? activeResourceLeakError(input.testCase.id, input.activeResourceTypesBefore, input.dependencies.readActiveResourceTypes(), 'body')
42
+ : null;
43
+ const runnerErrors = [promiseLeakError, activeLeakError].filter(function isRunnerError(error) {
44
+ return error !== null;
45
+ });
46
+ return {
47
+ executedCase: runnerErrors.length === 0
48
+ ? input.executedCase
49
+ : runtimePolicyCase(input.testCase, input.executedCase),
50
+ runnerErrors
51
+ };
52
+ }
53
+ export function concurrentRunActiveResourceLeak(dependencies, activeResourceTypesBefore) {
54
+ return activeResourceLeakError(null, activeResourceTypesBefore, dependencies.readActiveResourceTypes(), 'run');
55
+ }
56
+ //# sourceMappingURL=execution-async-leak-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-async-leak-policy.js","sourceRoot":"","sources":["../../../../source/engine/execution-async-leak-policy.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,uBAAuB,EACvB,sBAAsB,EACtB,8BAA8B,EAEjC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAyBrD,MAAM,mCAAmC,GAAG,IAAI,GAAG,CAA8B;IAC7E,yBAAyB;IACzB,wBAAwB;IACxB,2BAA2B;CAC9B,CAAC,CAAC;AAEH,MAAM,UAAU,+BAA+B,CAAC,WAAiC;IAC7E,OAAO,WAAW,KAAK,SAAS;QAC5B,CAAC,CAAC,sBAAsB,EAAE;QAC1B,CAAC,CAAC,8BAA8B,EAAE,CAAC;AAC3C,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAsB,EAAE,YAA4B;IAC3E,OAAO;QACH,MAAM,EAAE;YACJ,EAAE,EAAE,QAAQ,CAAC,EAAE;YACf,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,gBAAgB;SAC5B;QACD,UAAU,EAAE,YAAY,CAAC,UAAU;KACtC,CAAC;AACN,CAAC;AAED,SAAS,iCAAiC,CAAC,YAA4B;IACnE,MAAM,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC;IAExC,OAAO,OAAO,EAAE,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,sBAAsB,CAAC,OAAO;QAC5F,OAAO,OAAO,CAAC,IAAI,KAAK,eAAe,IAAI,mCAAmC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrG,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,KAA+B;IACzE,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAC7C,OAAO;YACH,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,YAAY,EAAE,EAAE;SACnB,CAAC;IACN,CAAC;IAED,MAAM,eAAe,EAAE,CAAC;IAExB,MAAM,gBAAgB,GAAG,iCAAiC,CAAC,KAAK,CAAC,YAAY,CAAC;QAC1E,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC/E,MAAM,eAAe,GAAG,KAAK,CAAC,0BAA0B;QACpD,CAAC,CAAC,uBAAuB,CACrB,KAAK,CAAC,QAAQ,CAAC,EAAE,EACjB,KAAK,CAAC,yBAAyB,EAC/B,KAAK,CAAC,YAAY,CAAC,uBAAuB,EAAE,EAC5C,MAAM,CACT;QACD,CAAC,CAAC,IAAI,CAAC;IACX,MAAM,YAAY,GAAG,CAAE,gBAAgB,EAAE,eAAe,CAAE,CAAC,MAAM,CAAC,SAAS,aAAa,CACpF,KAAK;QAEL,OAAO,KAAK,KAAK,IAAI,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,OAAO;QACH,YAAY,EAAE,YAAY,CAAC,MAAM,KAAK,CAAC;YACnC,CAAC,CAAC,KAAK,CAAC,YAAY;YACpB,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC;QAC3D,YAAY;KACf,CAAC;AACN,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC3C,YAAmC,EACnC,yBAA4C;IAE5C,OAAO,uBAAuB,CAC1B,IAAI,EACJ,yBAAyB,EACzB,YAAY,CAAC,uBAAuB,EAAE,EACtC,KAAK,CACR,CAAC;AACN,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { type DefinedOutputRenderer } from './reporter-output.ts';
2
+ import type { DefinedReporter, RunFacts } from './reporter.ts';
3
+ import type { RunResourceUsageTracker } from './run-result.ts';
4
+ import type { ExecuteResourceBudgets, ExecuteTimeoutPolicy, ExecutionSupervisionDependencies } from './execution-supervision.ts';
5
+ export type ExecuteExecution = {
6
+ readonly mode: 'concurrent-in-process' | 'serial-in-process';
7
+ };
8
+ export type ExecuteOptions = {
9
+ readonly execution: ExecuteExecution;
10
+ readonly outputRenderer?: DefinedOutputRenderer;
11
+ readonly reporters: readonly DefinedReporter[];
12
+ readonly resourceBudgets?: ExecuteResourceBudgets | null;
13
+ readonly resourceUsageTracker?: RunResourceUsageTracker | null;
14
+ readonly runtimePolicy?: RuntimePolicy | null;
15
+ readonly runFacts: RunFacts;
16
+ readonly startedAt: string;
17
+ readonly timeoutPolicy?: ExecuteTimeoutPolicy | null;
18
+ };
19
+ export type NormalizedExecuteOptions = ExecuteOptions & {
20
+ readonly outputRenderer: DefinedOutputRenderer;
21
+ readonly runtimePolicy: RuntimePolicy | null;
22
+ };
23
+ type RuntimePolicy = NonNullable<ExecutionSupervisionDependencies['runtimePolicy']>;
24
+ export declare function executeOptionsWithDefaults(options: ExecuteOptions | undefined): NormalizedExecuteOptions;
25
+ export {};
26
+ //# sourceMappingURL=execution-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-options.d.ts","sourceRoot":"","sources":["../../../../source/engine/execution-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7F,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,KAAK,EACR,sBAAsB,EACtB,oBAAoB,EACpB,gCAAgC,EACnC,MAAM,4BAA4B,CAAC;AAEpC,MAAM,MAAM,gBAAgB,GAAG;IAC3B,QAAQ,CAAC,IAAI,EAAE,uBAAuB,GAAG,mBAAmB,CAAC;CAChE,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IACzB,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACrC,QAAQ,CAAC,cAAc,CAAC,EAAE,qBAAqB,CAAC;IAChD,QAAQ,CAAC,SAAS,EAAE,SAAS,eAAe,EAAE,CAAC;IAC/C,QAAQ,CAAC,eAAe,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACzD,QAAQ,CAAC,oBAAoB,CAAC,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAC/D,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC9C,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;CACxD,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,cAAc,GAAG;IACpD,QAAQ,CAAC,cAAc,EAAE,qBAAqB,CAAC;IAC/C,QAAQ,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;CAChD,CAAC;AAEF,KAAK,aAAa,GAAG,WAAW,CAAC,gCAAgC,CAAC,eAAe,CAAC,CAAC,CAAC;AAIpF,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,cAAc,GAAG,SAAS,GAAG,wBAAwB,CAsBxG"}
@@ -0,0 +1,25 @@
1
+ import { createPlainOutputRenderer } from "./reporter-output.js";
2
+ const epoch = new Date(0);
3
+ export function executeOptionsWithDefaults(options) {
4
+ if (options !== undefined) {
5
+ return {
6
+ ...options,
7
+ outputRenderer: options.outputRenderer ?? createPlainOutputRenderer(),
8
+ resourceBudgets: options.resourceBudgets ?? null,
9
+ runtimePolicy: options.runtimePolicy ?? null,
10
+ timeoutPolicy: options.timeoutPolicy ?? null
11
+ };
12
+ }
13
+ return {
14
+ execution: { mode: 'serial-in-process' },
15
+ outputRenderer: createPlainOutputRenderer(),
16
+ reporters: [],
17
+ resourceBudgets: null,
18
+ resourceUsageTracker: null,
19
+ runtimePolicy: null,
20
+ runFacts: {},
21
+ startedAt: epoch.toISOString(),
22
+ timeoutPolicy: null
23
+ };
24
+ }
25
+ //# sourceMappingURL=execution-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-options.js","sourceRoot":"","sources":["../../../../source/engine/execution-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAA8B,MAAM,sBAAsB,CAAC;AAgC7F,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;AAE1B,MAAM,UAAU,0BAA0B,CAAC,OAAmC;IAC1E,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO;YACH,GAAG,OAAO;YACV,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,yBAAyB,EAAE;YACrE,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,IAAI;YAChD,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,IAAI;YAC5C,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,IAAI;SAC/C,CAAC;IACN,CAAC;IAED,OAAO;QACH,SAAS,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE;QACxC,cAAc,EAAE,yBAAyB,EAAE;QAC3C,SAAS,EAAE,EAAE;QACb,eAAe,EAAE,IAAI;QACrB,oBAAoB,EAAE,IAAI;QAC1B,aAAa,EAAE,IAAI;QACnB,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,KAAK,CAAC,WAAW,EAAE;QAC9B,aAAa,EAAE,IAAI;KACtB,CAAC;AACN,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { startResourceBudgetTracking } from "./execution-resource-budget-tracking.js";
2
+ export async function executeResourceTrackedCases(input, executeCases) {
3
+ const { resourceUsageTracker } = input.options;
4
+ if (resourceUsageTracker === null || resourceUsageTracker === undefined) {
5
+ return {
6
+ executedTestPlan: await executeCases(input),
7
+ resourceUsage: null
8
+ };
9
+ }
10
+ const resourceBudgetTracking = startResourceBudgetTracking({
11
+ dependencies: input.context.dependencies,
12
+ resourceBudgets: input.options.resourceBudgets ?? null,
13
+ resourceUsageTracker,
14
+ supervision: input.supervision
15
+ });
16
+ try {
17
+ const executedTestPlan = await executeCases(input);
18
+ const resourceBudgetResult = resourceBudgetTracking.finish();
19
+ return {
20
+ executedTestPlan: {
21
+ ...executedTestPlan,
22
+ reporterErrors: [
23
+ ...executedTestPlan.reporterErrors,
24
+ ...resourceBudgetResult.runnerErrors
25
+ ]
26
+ },
27
+ resourceUsage: resourceBudgetResult.resourceUsage
28
+ };
29
+ }
30
+ catch (error) {
31
+ resourceBudgetTracking.stop();
32
+ throw error;
33
+ }
34
+ }
35
+ //# sourceMappingURL=execution-resource-tracked-cases.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-resource-tracked-cases.js","sourceRoot":"","sources":["../../../../source/engine/execution-resource-tracked-cases.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,yCAAyC,CAAC;AAgCtF,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAI7C,KAAY,EACZ,YAAiD;IAEjD,MAAM,EAAE,oBAAoB,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;IAE/C,IAAI,oBAAoB,KAAK,IAAI,IAAI,oBAAoB,KAAK,SAAS,EAAE,CAAC;QACtE,OAAO;YACH,gBAAgB,EAAE,MAAM,YAAY,CAAC,KAAK,CAAC;YAC3C,aAAa,EAAE,IAAI;SACtB,CAAC;IACN,CAAC;IAED,MAAM,sBAAsB,GAAG,2BAA2B,CAAC;QACvD,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY;QACxC,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,eAAe,IAAI,IAAI;QACtD,oBAAoB;QACpB,WAAW,EAAE,KAAK,CAAC,WAAW;KACjC,CAAC,CAAC;IAEH,IAAI,CAAC;QACD,MAAM,gBAAgB,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,oBAAoB,GAAG,sBAAsB,CAAC,MAAM,EAAE,CAAC;QAE7D,OAAO;YACH,gBAAgB,EAAE;gBACd,GAAG,gBAAgB;gBACnB,cAAc,EAAE;oBACZ,GAAG,gBAAgB,CAAC,cAAc;oBAClC,GAAG,oBAAoB,CAAC,YAAY;iBACvC;aACJ;YACD,aAAa,EAAE,oBAAoB,CAAC,aAAa;SACpD,CAAC;IACN,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACtB,sBAAsB,CAAC,IAAI,EAAE,CAAC;QAE9B,MAAM,KAAK,CAAC;IAChB,CAAC;AACL,CAAC"}
@@ -1,4 +1,20 @@
1
1
  import { caseIdentityKey } from "./identity.js";
2
+ export function appendRunnerErrors(result, runnerErrors) {
3
+ if (runnerErrors.length === 0) {
4
+ return result;
5
+ }
6
+ return {
7
+ ...result,
8
+ runnerErrors: [...result.runnerErrors, ...runnerErrors]
9
+ };
10
+ }
11
+ export async function throwWithCleanupErrors(error, cleanup) {
12
+ const cleanupErrors = await cleanup();
13
+ if (cleanupErrors.length > 0) {
14
+ throw new AggregateError([error, ...cleanupErrors], 'Execution failed and reporter cleanup failed.', { cause: error });
15
+ }
16
+ throw error;
17
+ }
2
18
  function hasFailed(testResult) {
3
19
  return testResult.verdict === 'fail';
4
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"execution-result.js","sourceRoot":"","sources":["../../../../source/engine/execution-result.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"execution-result.js","sourceRoot":"","sources":["../../../../source/engine/execution-result.ts"],"names":[],"mappings":"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"}
@@ -113,8 +113,8 @@ function policyCheckedCase(testCase, executedCase, supervision, dependencies) {
113
113
  }
114
114
  async function runTestCaseWithPolicy(testCase, controller, supervision, dependencies) {
115
115
  const executedCase = await runTestCase(testCase, dependencies.wallClock, {
116
- runtimePolicy: dependencies.runtimePolicy ?? null,
117
- signal: controller.signal
116
+ controller,
117
+ runtimePolicy: dependencies.runtimePolicy ?? null
118
118
  });
119
119
  return policyCheckedCase(testCase, executedCase, supervision, dependencies);
120
120
  }