@overkill-dev/engine 0.0.14 → 0.0.16
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/diff/diff-shape.d.ts +7 -2
- package/diff/diff-shape.d.ts.map +1 -1
- package/engine/assertion-recorder.js +242 -0
- package/engine/assertion-recorder.js.map +1 -0
- package/engine/case-execution.js +31 -247
- package/engine/case-execution.js.map +1 -1
- package/engine/execution-result.js +12 -4
- package/engine/execution-result.js.map +1 -1
- package/engine/execution-supervision.d.ts +50 -0
- package/engine/execution-supervision.d.ts.map +1 -0
- package/engine/execution-supervision.js +316 -0
- package/engine/execution-supervision.js.map +1 -0
- package/engine/execution.d.ts +4 -1
- package/engine/execution.d.ts.map +1 -1
- package/engine/execution.js +70 -61
- package/engine/execution.js.map +1 -1
- package/engine/reporter-output.d.ts +8 -1
- package/engine/reporter-output.d.ts.map +1 -1
- package/engine/reporter-output.js +9 -2
- package/engine/reporter-output.js.map +1 -1
- package/engine/reporter.d.ts +9 -3
- package/engine/reporter.d.ts.map +1 -1
- package/engine/reporter.js +7 -0
- package/engine/reporter.js.map +1 -1
- package/engine/run-result.d.ts +15 -5
- package/engine/run-result.d.ts.map +1 -1
- package/engine/run-result.js.map +1 -1
- package/engine/test-node.d.ts +1 -0
- package/engine/test-node.d.ts.map +1 -1
- package/engine/test-node.js.map +1 -1
- package/package.json +3 -1
- package/packages/engine/engine.entry-point.d.ts +4 -4
- package/packages/engine/engine.entry-point.d.ts.map +1 -1
- package/packages/engine/engine.entry-point.js +2 -2
- package/packages/engine/engine.entry-point.js.map +1 -1
- package/sbom.cdx.json +5 -5
package/diff/diff-shape.d.ts
CHANGED
|
@@ -7,9 +7,13 @@ type IndexPathSegment = {
|
|
|
7
7
|
readonly index: number;
|
|
8
8
|
readonly kind: 'index';
|
|
9
9
|
};
|
|
10
|
-
type
|
|
10
|
+
type MapKeyPathSegment = {
|
|
11
11
|
readonly key: SerializedValue;
|
|
12
|
-
readonly kind: 'map-key'
|
|
12
|
+
readonly kind: 'map-key';
|
|
13
|
+
};
|
|
14
|
+
type MapValuePathSegment = {
|
|
15
|
+
readonly key: SerializedValue;
|
|
16
|
+
readonly kind: 'map-value';
|
|
13
17
|
};
|
|
14
18
|
type PropertyPathSegment = {
|
|
15
19
|
readonly key: SerializedPropertyKey;
|
|
@@ -20,6 +24,7 @@ type SetValuePathSegment = {
|
|
|
20
24
|
readonly value: SerializedValue;
|
|
21
25
|
};
|
|
22
26
|
type IndexedPathSegment = BytePathSegment | IndexPathSegment;
|
|
27
|
+
type MapPathSegment = MapKeyPathSegment | MapValuePathSegment;
|
|
23
28
|
type KeyedPathSegment = MapPathSegment | PropertyPathSegment | SetValuePathSegment;
|
|
24
29
|
export type DiffPathSegment = IndexedPathSegment | KeyedPathSegment;
|
|
25
30
|
type ReplaceOperation = {
|
package/diff/diff-shape.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff-shape.d.ts","sourceRoot":"","sources":["../../../../source/diff/diff-shape.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAE7F,KAAK,eAAe,GAAG;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,KAAK,
|
|
1
|
+
{"version":3,"file":"diff-shape.d.ts","sourceRoot":"","sources":["../../../../source/diff/diff-shape.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
import { assertionPasses } from "../assertion-protocol/evaluation.js";
|
|
2
|
+
export class RequireFailedSignalError extends Error {
|
|
3
|
+
constructor() {
|
|
4
|
+
super('Requirement failed.');
|
|
5
|
+
this.name = 'RequireFailedSignalError';
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
export class TestContractSignalError extends Error {
|
|
9
|
+
contractFailure;
|
|
10
|
+
constructor(failure, options) {
|
|
11
|
+
super(failure.summary, options);
|
|
12
|
+
this.name = 'TestContractSignalError';
|
|
13
|
+
this.contractFailure = failure;
|
|
14
|
+
}
|
|
15
|
+
failure() {
|
|
16
|
+
return this.contractFailure;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export function assertNonEmptyItems(items, message) {
|
|
20
|
+
if (items.length === 0) {
|
|
21
|
+
throw new TypeError(message);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function createNoAssertionsFailure() {
|
|
25
|
+
return {
|
|
26
|
+
actual: 0,
|
|
27
|
+
code: 'no-assertions',
|
|
28
|
+
expected: 'at least one assertion',
|
|
29
|
+
kind: 'test-contract',
|
|
30
|
+
summary: 'Expected at least one assertion.'
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function createInvalidPlanFailure(actual) {
|
|
34
|
+
return {
|
|
35
|
+
actual,
|
|
36
|
+
code: 'invalid-plan',
|
|
37
|
+
expected: 'positive integer plan before assertions',
|
|
38
|
+
kind: 'test-contract',
|
|
39
|
+
summary: 'Assertion plan must be a positive integer before assertions.'
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
function createPlanMismatchFailure(actual, expected) {
|
|
43
|
+
return {
|
|
44
|
+
actual,
|
|
45
|
+
code: 'plan-mismatch',
|
|
46
|
+
expected: String(expected),
|
|
47
|
+
kind: 'test-contract',
|
|
48
|
+
summary: 'Assertion plan count did not match.'
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
function createDeadBuilderAssertionFailure() {
|
|
52
|
+
return {
|
|
53
|
+
actual: 'missing recorded builder assertion',
|
|
54
|
+
code: 'dead-builder-assertion',
|
|
55
|
+
expected: 'returned assertions include every recorded builder assertion',
|
|
56
|
+
kind: 'test-contract',
|
|
57
|
+
summary: 'Returned assertions must include every recorded builder assertion.'
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
function createPendingAsyncAssertionFailure() {
|
|
61
|
+
return {
|
|
62
|
+
actual: 'pending async assertion',
|
|
63
|
+
code: 'pending-async-assertion',
|
|
64
|
+
expected: 'all async assertions awaited before collect',
|
|
65
|
+
kind: 'test-contract',
|
|
66
|
+
summary: 'Async assertion must be awaited before scope.assert.collect().'
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
export function isTestContractFailure(value) {
|
|
70
|
+
return !Array.isArray(value);
|
|
71
|
+
}
|
|
72
|
+
function isAssertionNode(assertionResult) {
|
|
73
|
+
return !Array.isArray(assertionResult);
|
|
74
|
+
}
|
|
75
|
+
function normalizeAssertionResult(assertionResult) {
|
|
76
|
+
const assertions = isAssertionNode(assertionResult) ? [assertionResult] : assertionResult;
|
|
77
|
+
assertNonEmptyItems(assertions, 'Expected returned assertions to be non-empty.');
|
|
78
|
+
return assertions;
|
|
79
|
+
}
|
|
80
|
+
function builderAssertionsInReturnedOrder(builderAssertions, returnedAssertions) {
|
|
81
|
+
let returnedIndex = 0;
|
|
82
|
+
return builderAssertions.every(function builderAssertionReturned(builderAssertion) {
|
|
83
|
+
while (returnedIndex < returnedAssertions.length) {
|
|
84
|
+
const returnedAssertion = returnedAssertions[returnedIndex];
|
|
85
|
+
returnedIndex += 1;
|
|
86
|
+
if (returnedAssertion === builderAssertion) {
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return false;
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
function recordContainsBuilderAssertion(recorded, builderAssertion) {
|
|
94
|
+
return recorded?.builderAssertion === builderAssertion;
|
|
95
|
+
}
|
|
96
|
+
function requireAssertionFromRecord(recorded) {
|
|
97
|
+
if (recorded?.assertion?.source === 'require') {
|
|
98
|
+
return recorded.assertion;
|
|
99
|
+
}
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
function requireAssertionsFromRecord(recorded) {
|
|
103
|
+
const requireAssertion = requireAssertionFromRecord(recorded);
|
|
104
|
+
if (requireAssertion !== null) {
|
|
105
|
+
return [requireAssertion];
|
|
106
|
+
}
|
|
107
|
+
return [];
|
|
108
|
+
}
|
|
109
|
+
function appendRecordedRequiresBeforeBuilderAssertion(recordedAssertions, recordIndex, builderAssertion) {
|
|
110
|
+
let nextRecordIndex = recordIndex;
|
|
111
|
+
const assertions = [];
|
|
112
|
+
while (nextRecordIndex < recordedAssertions.length) {
|
|
113
|
+
const recorded = recordedAssertions[nextRecordIndex];
|
|
114
|
+
if (recordContainsBuilderAssertion(recorded, builderAssertion)) {
|
|
115
|
+
return { assertions, recordIndex: nextRecordIndex + 1 };
|
|
116
|
+
}
|
|
117
|
+
assertions.push(...requireAssertionsFromRecord(recorded));
|
|
118
|
+
nextRecordIndex += 1;
|
|
119
|
+
}
|
|
120
|
+
return { assertions, recordIndex: nextRecordIndex };
|
|
121
|
+
}
|
|
122
|
+
function appendRemainingRecordedRequires(recordedAssertions, recordIndex) {
|
|
123
|
+
const assertions = [];
|
|
124
|
+
for (const recorded of recordedAssertions.slice(recordIndex)) {
|
|
125
|
+
if (recorded.assertion?.source === 'require') {
|
|
126
|
+
assertions.push(recorded.assertion);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return assertions;
|
|
130
|
+
}
|
|
131
|
+
function mergeRecordedRequires(recordedAssertions, returnedAssertions) {
|
|
132
|
+
const mergedAssertions = [];
|
|
133
|
+
let recordIndex = 0;
|
|
134
|
+
for (const returnedAssertion of returnedAssertions) {
|
|
135
|
+
const step = appendRecordedRequiresBeforeBuilderAssertion(recordedAssertions, recordIndex, returnedAssertion);
|
|
136
|
+
recordIndex = step.recordIndex;
|
|
137
|
+
mergedAssertions.push(...step.assertions, returnedAssertion);
|
|
138
|
+
}
|
|
139
|
+
mergedAssertions.push(...appendRemainingRecordedRequires(recordedAssertions, recordIndex));
|
|
140
|
+
return mergedAssertions;
|
|
141
|
+
}
|
|
142
|
+
export function createAssertionRecorder() {
|
|
143
|
+
const builderAssertions = [];
|
|
144
|
+
const recordedAssertions = [];
|
|
145
|
+
let failedRequireIndex = null;
|
|
146
|
+
let plannedCount = null;
|
|
147
|
+
function activeRecords() {
|
|
148
|
+
if (failedRequireIndex === null) {
|
|
149
|
+
return recordedAssertions;
|
|
150
|
+
}
|
|
151
|
+
return recordedAssertions.slice(0, failedRequireIndex + 1);
|
|
152
|
+
}
|
|
153
|
+
function pendingAssertionExists() {
|
|
154
|
+
return builderAssertions.includes(null);
|
|
155
|
+
}
|
|
156
|
+
function ensurePlanAllowed(count) {
|
|
157
|
+
if (!Number.isSafeInteger(count) || count <= 0 || plannedCount !== null || recordedAssertions.length > 0) {
|
|
158
|
+
throw new TestContractSignalError(createInvalidPlanFailure(count), undefined);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
function collect() {
|
|
162
|
+
if (builderAssertions.length === 0) {
|
|
163
|
+
throw new TestContractSignalError(createNoAssertionsFailure(), undefined);
|
|
164
|
+
}
|
|
165
|
+
if (pendingAssertionExists()) {
|
|
166
|
+
throw new TestContractSignalError(createPendingAsyncAssertionFailure(), undefined);
|
|
167
|
+
}
|
|
168
|
+
const resolvedAssertions = builderAssertions.filter(function resolvedAssertion(assertion) {
|
|
169
|
+
return assertion !== null;
|
|
170
|
+
});
|
|
171
|
+
assertNonEmptyItems(resolvedAssertions, 'Expected builder assertions to be non-empty.');
|
|
172
|
+
return resolvedAssertions;
|
|
173
|
+
}
|
|
174
|
+
function validateReturnedAssertions(assertions) {
|
|
175
|
+
if (pendingAssertionExists()) {
|
|
176
|
+
return createPendingAsyncAssertionFailure();
|
|
177
|
+
}
|
|
178
|
+
const resolvedAssertions = builderAssertions.filter(function resolvedAssertion(assertion) {
|
|
179
|
+
return assertion !== null;
|
|
180
|
+
});
|
|
181
|
+
if (!builderAssertionsInReturnedOrder(resolvedAssertions, assertions)) {
|
|
182
|
+
return createDeadBuilderAssertionFailure();
|
|
183
|
+
}
|
|
184
|
+
return null;
|
|
185
|
+
}
|
|
186
|
+
return {
|
|
187
|
+
activeRecordedAssertions() {
|
|
188
|
+
return activeRecords().flatMap(function toAssertion(recorded) {
|
|
189
|
+
return recorded.assertion === null ? [] : [recorded.assertion];
|
|
190
|
+
});
|
|
191
|
+
},
|
|
192
|
+
collect,
|
|
193
|
+
failContract(failure) {
|
|
194
|
+
throw new TestContractSignalError(failure, undefined);
|
|
195
|
+
},
|
|
196
|
+
plan(count) {
|
|
197
|
+
ensurePlanAllowed(count);
|
|
198
|
+
plannedCount = count;
|
|
199
|
+
},
|
|
200
|
+
recordAssert(assertion) {
|
|
201
|
+
builderAssertions.push(assertion);
|
|
202
|
+
recordedAssertions.push({ assertion, builderAssertion: assertion });
|
|
203
|
+
},
|
|
204
|
+
recordPendingAssert() {
|
|
205
|
+
const builderIndex = builderAssertions.length;
|
|
206
|
+
const recordIndex = recordedAssertions.length;
|
|
207
|
+
builderAssertions.push(null);
|
|
208
|
+
recordedAssertions.push({ assertion: null, builderAssertion: null });
|
|
209
|
+
return {
|
|
210
|
+
resolve(assertion) {
|
|
211
|
+
builderAssertions[builderIndex] = assertion;
|
|
212
|
+
recordedAssertions[recordIndex] = { assertion, builderAssertion: assertion };
|
|
213
|
+
}
|
|
214
|
+
};
|
|
215
|
+
},
|
|
216
|
+
recordRequire(assertion) {
|
|
217
|
+
recordedAssertions.push({ assertion, builderAssertion: null });
|
|
218
|
+
if (!assertionPasses(assertion)) {
|
|
219
|
+
failedRequireIndex = recordedAssertions.length - 1;
|
|
220
|
+
throw new RequireFailedSignalError();
|
|
221
|
+
}
|
|
222
|
+
},
|
|
223
|
+
requireFailed() {
|
|
224
|
+
return failedRequireIndex !== null;
|
|
225
|
+
},
|
|
226
|
+
returnedAssertions(assertionResult) {
|
|
227
|
+
const assertions = normalizeAssertionResult(assertionResult);
|
|
228
|
+
const contractFailure = validateReturnedAssertions(assertions);
|
|
229
|
+
if (contractFailure !== null) {
|
|
230
|
+
return contractFailure;
|
|
231
|
+
}
|
|
232
|
+
return mergeRecordedRequires(activeRecords(), assertions);
|
|
233
|
+
},
|
|
234
|
+
validateAssertionCount(reachedAssertionCount) {
|
|
235
|
+
if (plannedCount !== null && plannedCount !== reachedAssertionCount) {
|
|
236
|
+
return createPlanMismatchFailure(reachedAssertionCount, plannedCount);
|
|
237
|
+
}
|
|
238
|
+
return null;
|
|
239
|
+
}
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
//# sourceMappingURL=assertion-recorder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assertion-recorder.js","sourceRoot":"","sources":["../../../../source/engine/assertion-recorder.ts"],"names":[],"mappings":"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"}
|
package/engine/case-execution.js
CHANGED
|
@@ -1,248 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { evaluateAssertion, invalidDeepAssertionOperand } from "../assertion-protocol/evaluation.js";
|
|
2
2
|
import { createThrownErrorRecord } from "../assertion-protocol/thrown-error-record.js";
|
|
3
|
+
import { assertNonEmptyItems, createAssertionRecorder, isTestContractFailure, RequireFailedSignalError, TestContractSignalError } from "./assertion-recorder.js";
|
|
3
4
|
import { createRecordingAssertFacade } from "./assertion-facade.js";
|
|
4
5
|
import { createRecordingRequireFacade } from "./require-assertion-facade.js";
|
|
5
6
|
import { invalidDeepAssertionOperandFailure, verdictFromOutcome } from "./run-result.js";
|
|
6
|
-
class RequireFailedSignalError extends Error {
|
|
7
|
-
constructor() {
|
|
8
|
-
super('Requirement failed.');
|
|
9
|
-
this.name = 'RequireFailedSignalError';
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
class TestContractSignalError extends Error {
|
|
13
|
-
contractFailure;
|
|
14
|
-
constructor(failure, options) {
|
|
15
|
-
super(failure.summary, options);
|
|
16
|
-
this.name = 'TestContractSignalError';
|
|
17
|
-
this.contractFailure = failure;
|
|
18
|
-
}
|
|
19
|
-
failure() {
|
|
20
|
-
return this.contractFailure;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
function assertNonEmptyItems(items, message) {
|
|
24
|
-
if (items.length === 0) {
|
|
25
|
-
throw new TypeError(message);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
function createNoAssertionsFailure() {
|
|
29
|
-
return {
|
|
30
|
-
actual: 0,
|
|
31
|
-
code: 'no-assertions',
|
|
32
|
-
expected: 'at least one assertion',
|
|
33
|
-
kind: 'test-contract',
|
|
34
|
-
summary: 'Expected at least one assertion.'
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
function createInvalidPlanFailure(actual) {
|
|
38
|
-
return {
|
|
39
|
-
actual,
|
|
40
|
-
code: 'invalid-plan',
|
|
41
|
-
expected: 'positive integer plan before assertions',
|
|
42
|
-
kind: 'test-contract',
|
|
43
|
-
summary: 'Assertion plan must be a positive integer before assertions.'
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
function createPlanMismatchFailure(actual, expected) {
|
|
47
|
-
return {
|
|
48
|
-
actual,
|
|
49
|
-
code: 'plan-mismatch',
|
|
50
|
-
expected: String(expected),
|
|
51
|
-
kind: 'test-contract',
|
|
52
|
-
summary: 'Assertion plan count did not match.'
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
function createDeadBuilderAssertionFailure() {
|
|
56
|
-
return {
|
|
57
|
-
actual: 'missing recorded builder assertion',
|
|
58
|
-
code: 'dead-builder-assertion',
|
|
59
|
-
expected: 'returned assertions include every recorded builder assertion',
|
|
60
|
-
kind: 'test-contract',
|
|
61
|
-
summary: 'Returned assertions must include every recorded builder assertion.'
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
function createPendingAsyncAssertionFailure() {
|
|
65
|
-
return {
|
|
66
|
-
actual: 'pending async assertion',
|
|
67
|
-
code: 'pending-async-assertion',
|
|
68
|
-
expected: 'all async assertions awaited before collect',
|
|
69
|
-
kind: 'test-contract',
|
|
70
|
-
summary: 'Async assertion must be awaited before scope.assert.collect().'
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
function isTestContractFailure(value) {
|
|
74
|
-
return !Array.isArray(value);
|
|
75
|
-
}
|
|
76
|
-
function isAssertionNode(assertionResult) {
|
|
77
|
-
return !Array.isArray(assertionResult);
|
|
78
|
-
}
|
|
79
|
-
function normalizeAssertionResult(assertionResult) {
|
|
80
|
-
const assertions = isAssertionNode(assertionResult) ? [assertionResult] : assertionResult;
|
|
81
|
-
assertNonEmptyItems(assertions, 'Expected returned assertions to be non-empty.');
|
|
82
|
-
return assertions;
|
|
83
|
-
}
|
|
84
|
-
function builderAssertionsInReturnedOrder(builderAssertions, returnedAssertions) {
|
|
85
|
-
let returnedIndex = 0;
|
|
86
|
-
return builderAssertions.every(function builderAssertionReturned(builderAssertion) {
|
|
87
|
-
while (returnedIndex < returnedAssertions.length) {
|
|
88
|
-
const returnedAssertion = returnedAssertions[returnedIndex];
|
|
89
|
-
returnedIndex += 1;
|
|
90
|
-
if (returnedAssertion === builderAssertion) {
|
|
91
|
-
return true;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
return false;
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
function recordContainsBuilderAssertion(recorded, builderAssertion) {
|
|
98
|
-
return recorded?.builderAssertion === builderAssertion;
|
|
99
|
-
}
|
|
100
|
-
function requireAssertionFromRecord(recorded) {
|
|
101
|
-
if (recorded?.assertion?.source === 'require') {
|
|
102
|
-
return recorded.assertion;
|
|
103
|
-
}
|
|
104
|
-
return null;
|
|
105
|
-
}
|
|
106
|
-
function requireAssertionsFromRecord(recorded) {
|
|
107
|
-
const requireAssertion = requireAssertionFromRecord(recorded);
|
|
108
|
-
if (requireAssertion !== null) {
|
|
109
|
-
return [requireAssertion];
|
|
110
|
-
}
|
|
111
|
-
return [];
|
|
112
|
-
}
|
|
113
|
-
function appendRecordedRequiresBeforeBuilderAssertion(recordedAssertions, recordIndex, builderAssertion) {
|
|
114
|
-
let nextRecordIndex = recordIndex;
|
|
115
|
-
const assertions = [];
|
|
116
|
-
while (nextRecordIndex < recordedAssertions.length) {
|
|
117
|
-
const recorded = recordedAssertions[nextRecordIndex];
|
|
118
|
-
if (recordContainsBuilderAssertion(recorded, builderAssertion)) {
|
|
119
|
-
return { assertions, recordIndex: nextRecordIndex + 1 };
|
|
120
|
-
}
|
|
121
|
-
assertions.push(...requireAssertionsFromRecord(recorded));
|
|
122
|
-
nextRecordIndex += 1;
|
|
123
|
-
}
|
|
124
|
-
return { assertions, recordIndex: nextRecordIndex };
|
|
125
|
-
}
|
|
126
|
-
function appendRemainingRecordedRequires(recordedAssertions, recordIndex) {
|
|
127
|
-
const assertions = [];
|
|
128
|
-
for (const recorded of recordedAssertions.slice(recordIndex)) {
|
|
129
|
-
if (recorded.assertion?.source === 'require') {
|
|
130
|
-
assertions.push(recorded.assertion);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
return assertions;
|
|
134
|
-
}
|
|
135
|
-
function mergeRecordedRequires(recordedAssertions, returnedAssertions) {
|
|
136
|
-
const mergedAssertions = [];
|
|
137
|
-
let recordIndex = 0;
|
|
138
|
-
for (const returnedAssertion of returnedAssertions) {
|
|
139
|
-
const step = appendRecordedRequiresBeforeBuilderAssertion(recordedAssertions, recordIndex, returnedAssertion);
|
|
140
|
-
recordIndex = step.recordIndex;
|
|
141
|
-
mergedAssertions.push(...step.assertions, returnedAssertion);
|
|
142
|
-
}
|
|
143
|
-
mergedAssertions.push(...appendRemainingRecordedRequires(recordedAssertions, recordIndex));
|
|
144
|
-
return mergedAssertions;
|
|
145
|
-
}
|
|
146
|
-
function createAssertionRecorder() {
|
|
147
|
-
const builderAssertions = [];
|
|
148
|
-
const recordedAssertions = [];
|
|
149
|
-
let failedRequireIndex = null;
|
|
150
|
-
let plannedCount = null;
|
|
151
|
-
function activeRecords() {
|
|
152
|
-
if (failedRequireIndex === null) {
|
|
153
|
-
return recordedAssertions;
|
|
154
|
-
}
|
|
155
|
-
return recordedAssertions.slice(0, failedRequireIndex + 1);
|
|
156
|
-
}
|
|
157
|
-
function pendingAssertionExists() {
|
|
158
|
-
return builderAssertions.includes(null);
|
|
159
|
-
}
|
|
160
|
-
function ensurePlanAllowed(count) {
|
|
161
|
-
if (!Number.isSafeInteger(count) || count <= 0 || plannedCount !== null || recordedAssertions.length > 0) {
|
|
162
|
-
throw new TestContractSignalError(createInvalidPlanFailure(count), undefined);
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
function collect() {
|
|
166
|
-
if (builderAssertions.length === 0) {
|
|
167
|
-
throw new TestContractSignalError(createNoAssertionsFailure(), undefined);
|
|
168
|
-
}
|
|
169
|
-
if (pendingAssertionExists()) {
|
|
170
|
-
throw new TestContractSignalError(createPendingAsyncAssertionFailure(), undefined);
|
|
171
|
-
}
|
|
172
|
-
const resolvedAssertions = builderAssertions.filter(function resolvedAssertion(assertion) {
|
|
173
|
-
return assertion !== null;
|
|
174
|
-
});
|
|
175
|
-
assertNonEmptyItems(resolvedAssertions, 'Expected builder assertions to be non-empty.');
|
|
176
|
-
return resolvedAssertions;
|
|
177
|
-
}
|
|
178
|
-
function validateReturnedAssertions(assertions) {
|
|
179
|
-
if (pendingAssertionExists()) {
|
|
180
|
-
return createPendingAsyncAssertionFailure();
|
|
181
|
-
}
|
|
182
|
-
const resolvedAssertions = builderAssertions.filter(function resolvedAssertion(assertion) {
|
|
183
|
-
return assertion !== null;
|
|
184
|
-
});
|
|
185
|
-
if (!builderAssertionsInReturnedOrder(resolvedAssertions, assertions)) {
|
|
186
|
-
return createDeadBuilderAssertionFailure();
|
|
187
|
-
}
|
|
188
|
-
return null;
|
|
189
|
-
}
|
|
190
|
-
return {
|
|
191
|
-
activeRecordedAssertions() {
|
|
192
|
-
return activeRecords().flatMap(function toAssertion(recorded) {
|
|
193
|
-
return recorded.assertion === null ? [] : [recorded.assertion];
|
|
194
|
-
});
|
|
195
|
-
},
|
|
196
|
-
collect,
|
|
197
|
-
failContract(failure) {
|
|
198
|
-
throw new TestContractSignalError(failure, undefined);
|
|
199
|
-
},
|
|
200
|
-
plan(count) {
|
|
201
|
-
ensurePlanAllowed(count);
|
|
202
|
-
plannedCount = count;
|
|
203
|
-
},
|
|
204
|
-
recordAssert(assertion) {
|
|
205
|
-
builderAssertions.push(assertion);
|
|
206
|
-
recordedAssertions.push({ assertion, builderAssertion: assertion });
|
|
207
|
-
},
|
|
208
|
-
recordPendingAssert() {
|
|
209
|
-
const builderIndex = builderAssertions.length;
|
|
210
|
-
const recordIndex = recordedAssertions.length;
|
|
211
|
-
builderAssertions.push(null);
|
|
212
|
-
recordedAssertions.push({ assertion: null, builderAssertion: null });
|
|
213
|
-
return {
|
|
214
|
-
resolve(assertion) {
|
|
215
|
-
builderAssertions[builderIndex] = assertion;
|
|
216
|
-
recordedAssertions[recordIndex] = { assertion, builderAssertion: assertion };
|
|
217
|
-
}
|
|
218
|
-
};
|
|
219
|
-
},
|
|
220
|
-
recordRequire(assertion) {
|
|
221
|
-
recordedAssertions.push({ assertion, builderAssertion: null });
|
|
222
|
-
if (!assertionPasses(assertion)) {
|
|
223
|
-
failedRequireIndex = recordedAssertions.length - 1;
|
|
224
|
-
throw new RequireFailedSignalError();
|
|
225
|
-
}
|
|
226
|
-
},
|
|
227
|
-
requireFailed() {
|
|
228
|
-
return failedRequireIndex !== null;
|
|
229
|
-
},
|
|
230
|
-
returnedAssertions(assertionResult) {
|
|
231
|
-
const assertions = normalizeAssertionResult(assertionResult);
|
|
232
|
-
const contractFailure = validateReturnedAssertions(assertions);
|
|
233
|
-
if (contractFailure !== null) {
|
|
234
|
-
return contractFailure;
|
|
235
|
-
}
|
|
236
|
-
return mergeRecordedRequires(activeRecords(), assertions);
|
|
237
|
-
},
|
|
238
|
-
validateAssertionCount(reachedAssertionCount) {
|
|
239
|
-
if (plannedCount !== null && plannedCount !== reachedAssertionCount) {
|
|
240
|
-
return createPlanMismatchFailure(reachedAssertionCount, plannedCount);
|
|
241
|
-
}
|
|
242
|
-
return null;
|
|
243
|
-
}
|
|
244
|
-
};
|
|
245
|
-
}
|
|
246
7
|
function evaluatedAssertionFailure(assertions) {
|
|
247
8
|
const checks = assertions.flatMap(function evaluateRecordedAssertion(assertion, index) {
|
|
248
9
|
const failedCheck = evaluateAssertion(assertion, index + 1);
|
|
@@ -269,7 +30,7 @@ function assertionContractFailure(assertions) {
|
|
|
269
30
|
function assertionFailure(assertions) {
|
|
270
31
|
return assertionContractFailure(assertions) ?? evaluatedAssertionFailure(assertions);
|
|
271
32
|
}
|
|
272
|
-
function createTestScope(recorder) {
|
|
33
|
+
function createTestScope(recorder, signal) {
|
|
273
34
|
const assertContext = Object.assign(createRecordingAssertFacade({
|
|
274
35
|
failContract(failure) {
|
|
275
36
|
return recorder.failContract(failure);
|
|
@@ -297,7 +58,8 @@ function createTestScope(recorder) {
|
|
|
297
58
|
recordRequire(assertion) {
|
|
298
59
|
recorder.recordRequire(assertion);
|
|
299
60
|
}
|
|
300
|
-
}, null)
|
|
61
|
+
}, null),
|
|
62
|
+
signal
|
|
301
63
|
};
|
|
302
64
|
}
|
|
303
65
|
function requireFailedBody(recorder) {
|
|
@@ -346,9 +108,9 @@ function failedBody(recorder, error) {
|
|
|
346
108
|
? contractFailedBody(recorder, error.failure())
|
|
347
109
|
: bodyErrorResult(recorder, error);
|
|
348
110
|
}
|
|
349
|
-
async function runCaseBody(testCase, recorder) {
|
|
111
|
+
async function runCaseBody(testCase, recorder, options) {
|
|
350
112
|
try {
|
|
351
|
-
return completedBody(recorder, await testCase.body(createTestScope(recorder)));
|
|
113
|
+
return completedBody(recorder, await testCase.body(createTestScope(recorder, options.signal)));
|
|
352
114
|
}
|
|
353
115
|
catch (error) {
|
|
354
116
|
return failedBody(recorder, error);
|
|
@@ -390,10 +152,32 @@ function createOutcome(recorder, executedBody) {
|
|
|
390
152
|
kind: 'fail'
|
|
391
153
|
};
|
|
392
154
|
}
|
|
393
|
-
|
|
155
|
+
function defaultRunTestCaseOptions() {
|
|
156
|
+
const controller = new AbortController();
|
|
157
|
+
return {
|
|
158
|
+
signal: controller.signal
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
export function timeoutFailure(deadlineMilliseconds, elapsedMilliseconds) {
|
|
162
|
+
return {
|
|
163
|
+
deadlineMilliseconds,
|
|
164
|
+
elapsedMilliseconds,
|
|
165
|
+
kind: 'timeout'
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
export function invalidTimeoutMetadataFailure(actual, expected) {
|
|
169
|
+
return {
|
|
170
|
+
actual,
|
|
171
|
+
code: 'invalid-timeout-metadata',
|
|
172
|
+
expected,
|
|
173
|
+
kind: 'test-contract',
|
|
174
|
+
summary: 'Timeout metadata must be a positive safe integer within the hard timeout.'
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
export async function runTestCase(testCase, wallClock, options = defaultRunTestCaseOptions()) {
|
|
394
178
|
const recorder = createAssertionRecorder();
|
|
395
179
|
const startedAt = wallClock.currentTimestampInMilliseconds;
|
|
396
|
-
const executedBody = await runCaseBody(testCase, recorder);
|
|
180
|
+
const executedBody = await runCaseBody(testCase, recorder, options);
|
|
397
181
|
const outcome = createOutcome(recorder, executedBody);
|
|
398
182
|
const verdict = verdictFromOutcome(outcome);
|
|
399
183
|
return {
|
|
@@ -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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"}
|