@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.
- package/compare/serialized-value.d.ts +1 -1
- package/compare/serialized-value.d.ts.map +1 -1
- package/compare/serialized-value.js +3 -3
- package/compare/serialized-value.js.map +1 -1
- package/engine/assertion-recorder.js +12 -3
- package/engine/assertion-recorder.js.map +1 -1
- package/engine/async-control.d.ts +33 -0
- package/engine/async-control.d.ts.map +1 -0
- package/engine/async-control.js +153 -0
- package/engine/async-control.js.map +1 -0
- package/engine/async-leak-diagnostics.d.ts +20 -0
- package/engine/async-leak-diagnostics.d.ts.map +1 -0
- package/engine/async-leak-diagnostics.js +157 -0
- package/engine/async-leak-diagnostics.js.map +1 -0
- package/engine/case-execution.d.ts +1 -1
- package/engine/case-execution.d.ts.map +1 -1
- package/engine/case-execution.js +127 -65
- package/engine/case-execution.js.map +1 -1
- package/engine/engine.d.ts +2 -1
- package/engine/engine.d.ts.map +1 -1
- package/engine/engine.js +3 -4
- package/engine/engine.js.map +1 -1
- package/engine/execution-async-leak-policy.d.ts +24 -0
- package/engine/execution-async-leak-policy.d.ts.map +1 -0
- package/engine/execution-async-leak-policy.js +56 -0
- package/engine/execution-async-leak-policy.js.map +1 -0
- package/engine/execution-options.d.ts +26 -0
- package/engine/execution-options.d.ts.map +1 -0
- package/engine/execution-options.js +25 -0
- package/engine/execution-options.js.map +1 -0
- package/engine/execution-resource-tracked-cases.js +35 -0
- package/engine/execution-resource-tracked-cases.js.map +1 -0
- package/engine/execution-result.js +16 -0
- package/engine/execution-result.js.map +1 -1
- package/engine/execution-supervision.js +2 -2
- package/engine/execution-supervision.js.map +1 -1
- package/engine/execution.d.ts +7 -20
- package/engine/execution.d.ts.map +1 -1
- package/engine/execution.js +49 -85
- package/engine/execution.js.map +1 -1
- package/engine/node-assertion-error.js +47 -0
- package/engine/node-assertion-error.js.map +1 -0
- package/engine/run-result.d.ts +19 -1
- package/engine/run-result.d.ts.map +1 -1
- package/engine/run-result.js.map +1 -1
- package/engine/test-node.d.ts +28 -1
- package/engine/test-node.d.ts.map +1 -1
- package/engine/test-node.js +24 -2
- package/engine/test-node.js.map +1 -1
- package/engine/test-plan.js +1 -1
- package/engine/test-plan.js.map +1 -1
- package/engine/test-scope-lifecycle.js +63 -0
- package/engine/test-scope-lifecycle.js.map +1 -0
- package/engine/throwing-test-scope.js +27 -0
- package/engine/throwing-test-scope.js.map +1 -0
- package/package.json +4 -2
- package/packages/engine/engine.entry-point.d.ts +4 -2
- package/packages/engine/engine.entry-point.d.ts.map +1 -1
- package/packages/engine/engine.entry-point.js +11 -3
- package/packages/engine/engine.entry-point.js.map +1 -1
- package/readme.md +33 -3
- package/sbom.cdx.json +4 -4
package/engine/case-execution.js
CHANGED
|
@@ -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 {
|
|
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
|
|
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
|
-
|
|
37
|
+
cleanupErrors,
|
|
38
|
+
contractFailures,
|
|
69
39
|
requireFailed: true,
|
|
70
40
|
returnedAssertions: recorder.activeRecordedAssertions()
|
|
71
41
|
};
|
|
72
42
|
}
|
|
73
|
-
function contractFailedBody(recorder,
|
|
43
|
+
function contractFailedBody(recorder, contractFailures, cleanupErrors) {
|
|
74
44
|
return {
|
|
75
45
|
bodyError: null,
|
|
76
|
-
|
|
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
|
-
|
|
55
|
+
cleanupErrors,
|
|
56
|
+
contractFailures,
|
|
85
57
|
requireFailed: false,
|
|
86
58
|
returnedAssertions: recorder.activeRecordedAssertions()
|
|
87
59
|
};
|
|
88
60
|
}
|
|
89
|
-
function
|
|
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
|
-
|
|
99
|
+
cleanupErrors: [],
|
|
100
|
+
contractFailures: [],
|
|
99
101
|
requireFailed: false,
|
|
100
102
|
returnedAssertions
|
|
101
103
|
};
|
|
102
104
|
}
|
|
103
|
-
function failedBody(
|
|
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
|
|
108
|
-
? contractFailedBody(recorder, error.failure())
|
|
109
|
-
: bodyErrorResult(recorder, error);
|
|
118
|
+
return bodyErrorResult(recorder, error, lifecycleFailures, cleanupErrors);
|
|
110
119
|
}
|
|
111
|
-
async function
|
|
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('
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
131
|
-
|
|
132
|
-
|
|
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
|
-
|
|
188
|
+
failures.push({
|
|
136
189
|
error: executedBody.bodyError,
|
|
137
190
|
kind: 'body-error'
|
|
138
|
-
};
|
|
191
|
+
});
|
|
139
192
|
}
|
|
140
|
-
|
|
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 ||
|
|
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
|
-
|
|
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
|
-
|
|
170
|
-
|
|
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":"AACA,OAAO,EACH,iBAAiB,EACjB,2BAA2B,EAC9B,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EAAE,uBAAuB,EAA0B,MAAM,8CAA8C,CAAC;AAC/G,OAAO,EACH,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EAE1B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"case-execution.js","sourceRoot":"","sources":["../../../../source/engine/case-execution.ts"],"names":[],"mappings":"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"}
|
package/engine/engine.d.ts
CHANGED
|
@@ -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;
|
package/engine/engine.d.ts.map
CHANGED
|
@@ -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,
|
|
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 {
|
|
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
|
-
|
|
31
|
-
return createEngineWithOwner(dependencies, createTestNodeOwner());
|
|
32
|
-
}
|
|
31
|
+
|
|
33
32
|
//# sourceMappingURL=engine.js.map
|
package/engine/engine.js.map
CHANGED
|
@@ -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,
|
|
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":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAehD,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,YAAoC;IACtF,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,OAAO;QACH,GAAG,MAAM;QACT,YAAY,EAAE,CAAE,GAAG,MAAM,CAAC,YAAY,EAAE,GAAG,YAAY,CAAE;KAC5D,CAAC;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CACxC,KAAc,EACd,OAA0C;IAE1C,MAAM,aAAa,GAAG,MAAM,OAAO,EAAE,CAAC;IAEtC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,cAAc,CACpB,CAAE,KAAK,EAAE,GAAG,aAAa,CAAE,EAC3B,+CAA+C,EAC/C,EAAE,KAAK,EAAE,KAAK,EAAE,CACnB,CAAC;IACN,CAAC;IAED,MAAM,KAAK,CAAC;AAChB,CAAC;AAED,SAAS,SAAS,CAAC,UAAyB;IACxC,OAAO,UAAU,CAAC,OAAO,KAAK,MAAM,CAAC;AACzC,CAAC;AAED,SAAS,cAAc,CAAC,UAAyB;IAC7C,OAAO,UAAU,CAAC,OAAO,KAAK,cAAc,CAAC;AACjD,CAAC;AAED,SAAS,SAAS,CAAC,UAAyB;IACxC,OAAO,UAAU,CAAC,OAAO,KAAK,MAAM,CAAC;AACzC,CAAC;AAED,SAAS,UAAU,CAAC,UAAyB;IACzC,OAAO,UAAU,CAAC,OAAO,KAAK,MAAM,CAAC;AACzC,CAAC;AAED,SAAS,iBAAiB,CAAC,UAAyB;IAChD,OAAO,UAAU,CAAC,OAAO,KAAK,oBAAoB,CAAC;AACvD,CAAC;AAED,SAAS,OAAO,CAAC,UAAyB;IACtC,OAAO,UAAU,CAAC,OAAO,KAAK,SAAS,CAAC;AAC5C,CAAC;AAED,SAAS,aAAa,CAAC,UAAyB;IAC5C,OAAO,UAAU,CAAC,OAAO,KAAK,gBAAgB,CAAC;AACnD,CAAC;AAED,SAAS,aAAa,CAAC,QAAkB,EAAE,OAAiC;IACxE,OAAO;QACH,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM;QACvC,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,UAAU,EAAE,QAAQ,CAAC,eAAe,CAAC,MAAM;QAC3C,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM;QACxC,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,MAAM;QACnD,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM;QACxC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM;QAC9B,iBAAiB,EAAE,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,MAAM;QAC3D,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,MAAM;QACnD,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM;KAC7C,CAAC;AACN,CAAC;AAED,SAAS,QAAQ,CAAC,SAA4B;IAC1C,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,WAAW,CAAC,SAAiD;IAClE,OAAO,SAAS,CAAC,GAAG,CAAC,SAAS,OAAO,CAAC,KAAK;QACvC,OAAO,KAAK,CAAC,KAAK,CAAC;IACvB,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,mBAAmB;IACxB,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AACtD,CAAC;AAED,SAAS,uBAAuB,CAC5B,MAAoC,EACpC,KAA4C;IAE5C,OAAO;QACH,UAAU,EAAE,MAAM,CAAC,UAAU,GAAG,CAAC,KAAK,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAAG,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,OAAO,EAAE,MAAM,CAAC,OAAO,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAC1D,CAAC;AACN,CAAC;AAED,SAAS,cAAc,CACnB,MAA4B,EAC5B,SAA4B,EAC5B,KAA4C;IAE5C,IAAI,aAAa,GAAG,MAAM,CAAC;IAE3B,KAAK,IAAI,UAAU,GAAG,CAAC,EAAE,UAAU,IAAI,SAAS,CAAC,MAAM,EAAE,UAAU,IAAI,CAAC,EAAE,CAAC;QACvE,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;QACrD,aAAa,GAAG;YACZ,GAAG,aAAa;YAChB,CAAC,GAAG,CAAC,EAAE,uBAAuB,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,mBAAmB,EAAE,EAAE,KAAK,CAAC;SACrF,CAAC;IACN,CAAC;IAED,OAAO,aAAa,CAAC;AACzB,CAAC;AAED,SAAS,WAAW,CAAC,QAAkB,EAAE,OAAiC;IACtE,IAAI,MAAM,GAAyB,EAAE,CAAC;IACtC,MAAM,WAAW,GAAG,IAAI,GAAG,CACvB,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,MAAM;QAC5B,OAAO,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACtC,CAAC,CAAC,CACL,CAAC;IAEF,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,eAAe,EAAE,CAAC;QAC9C,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC,CAAC;IACnF,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QACpC,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC;QAE5E,IAAI,WAAW,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAChD,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,CAAC;QACjF,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,eAAe,CAC3B,QAAkB,EAClB,OAAiC,EACjC,cAAsC,EACtC,MAAuB;IAEvB,OAAO;QACH,SAAS,EAAE,EAAE;QACb,OAAO,EAAE,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC;QACvC,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,OAAO;QACP,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,YAAY,EAAE,cAAc;QAC5B,OAAO,EAAE,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC;QACzC,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,8BAA8B,GAAG,MAAM,CAAC,WAAW;KACnF,CAAC;AACN,CAAC"}
|
|
@@ -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
|
-
|
|
117
|
-
|
|
116
|
+
controller,
|
|
117
|
+
runtimePolicy: dependencies.runtimePolicy ?? null
|
|
118
118
|
});
|
|
119
119
|
return policyCheckedCase(testCase, executedCase, supervision, dependencies);
|
|
120
120
|
}
|