@overkill-dev/run 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assertion-protocol/assertion-evaluation.js +6 -0
- package/assertion-protocol/assertion-evaluation.js.map +1 -0
- package/assertion-protocol/assertion-node.js +33 -0
- package/assertion-protocol/assertion-node.js.map +1 -0
- package/assertion-protocol/assertion-reference.js +49 -0
- package/assertion-protocol/assertion-reference.js.map +1 -0
- package/assertion-protocol/assertions/boolean.js +12 -0
- package/assertion-protocol/assertions/boolean.js.map +1 -0
- package/assertion-protocol/assertions/collection.js +21 -0
- package/assertion-protocol/assertions/collection.js.map +1 -0
- package/assertion-protocol/assertions/dispatch.js +47 -0
- package/assertion-protocol/assertions/dispatch.js.map +1 -0
- package/assertion-protocol/assertions/equality.js +24 -0
- package/assertion-protocol/assertions/equality.js.map +1 -0
- package/assertion-protocol/assertions/fail.js +8 -0
- package/assertion-protocol/assertions/fail.js.map +1 -0
- package/assertion-protocol/assertions/numeric.js +43 -0
- package/assertion-protocol/assertions/numeric.js.map +1 -0
- package/assertion-protocol/assertions/partial.js +17 -0
- package/assertion-protocol/assertions/partial.js.map +1 -0
- package/assertion-protocol/assertions/presence.js +20 -0
- package/assertion-protocol/assertions/presence.js.map +1 -0
- package/assertion-protocol/assertions/string.js +33 -0
- package/assertion-protocol/assertions/string.js.map +1 -0
- package/assertion-protocol/assertions/type-shape.js +43 -0
- package/assertion-protocol/assertions/type-shape.js.map +1 -0
- package/assertion-protocol/collection-count.js +42 -0
- package/assertion-protocol/collection-count.js.map +1 -0
- package/assertion-protocol/evaluation.js +170 -0
- package/assertion-protocol/evaluation.js.map +1 -0
- package/assertion-protocol/partial-matching.js +13 -0
- package/assertion-protocol/partial-matching.js.map +1 -0
- package/assertion-protocol/source-location.js +76 -0
- package/assertion-protocol/source-location.js.map +1 -0
- package/assertion-protocol/thrown-error-record.js +17 -0
- package/assertion-protocol/thrown-error-record.js.map +1 -0
- package/assertion-protocol/thrown-matcher.js +201 -0
- package/assertion-protocol/thrown-matcher.js.map +1 -0
- package/compare/comparison-result.js +47 -0
- package/compare/comparison-result.js.map +1 -0
- package/compare/comparison-state.js +20 -0
- package/compare/comparison-state.js.map +1 -0
- package/compare/comparison.js +78 -0
- package/compare/comparison.js.map +1 -0
- package/compare/diff-path.js +37 -0
- package/compare/diff-path.js.map +1 -0
- package/compare/raw-comparison.js +285 -0
- package/compare/raw-comparison.js.map +1 -0
- package/compare/serialized-value-classification.js +99 -0
- package/compare/serialized-value-classification.js.map +1 -0
- package/compare/serialized-value-shape.js +12 -0
- package/compare/serialized-value-shape.js.map +1 -0
- package/compare/serialized-value-state.js +55 -0
- package/compare/serialized-value-state.js.map +1 -0
- package/compare/serialized-value.js +387 -0
- package/compare/serialized-value.js.map +1 -0
- package/compare/structured-diff.js +382 -0
- package/compare/structured-diff.js.map +1 -0
- package/compare/value-classification.js +112 -0
- package/compare/value-classification.js.map +1 -0
- package/diff/binary-diff.js +49 -0
- package/diff/binary-diff.js.map +1 -0
- package/diff/string-diff.js +22 -0
- package/diff/string-diff.js.map +1 -0
- package/engine/assertion-facade.js +361 -0
- package/engine/assertion-facade.js.map +1 -0
- package/engine/case-execution.js +408 -0
- package/engine/case-execution.js.map +1 -0
- package/engine/custom-assertion-recording.js +175 -0
- package/engine/custom-assertion-recording.js.map +1 -0
- package/engine/execution.d.ts +20 -0
- package/engine/execution.d.ts.map +1 -0
- package/engine/execution.js +323 -0
- package/engine/execution.js.map +1 -0
- package/engine/identity.js +5 -0
- package/engine/identity.js.map +1 -0
- package/engine/reporter-event-queue.js +23 -0
- package/engine/reporter-event-queue.js.map +1 -0
- package/engine/reporter.js +177 -0
- package/engine/reporter.js.map +1 -0
- package/engine/require-assertion-facade.js +127 -0
- package/engine/require-assertion-facade.js.map +1 -0
- package/engine/run-result.js +13 -0
- package/engine/run-result.js.map +1 -0
- package/package.json +8 -3
- package/packages/engine/assertion-protocol.entry-point.js +4 -0
- package/packages/engine/assertion-protocol.entry-point.js.map +1 -0
- package/packages/run/run.entry-point.d.ts +2 -1
- package/packages/run/run.entry-point.d.ts.map +1 -1
- package/packages/run/run.entry-point.js +1 -0
- package/packages/run/run.entry-point.js.map +1 -1
- package/readme.md +7 -2
- package/run/run.d.ts +87 -36
- package/run/run.d.ts.map +1 -1
- package/run/run.js +182 -8
- package/run/run.js.map +1 -1
- package/sbom.cdx.json +22 -5
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { captureSourceLocation } from "../assertion-protocol/source-location.js";
|
|
2
|
+
import { recordRequireReference } from "./custom-assertion-recording.js";
|
|
3
|
+
function messageFromOptions(options, annotation) {
|
|
4
|
+
return options?.message ?? annotation;
|
|
5
|
+
}
|
|
6
|
+
export function createRecordingRequireFacadeWithLocation(sink, annotation, captureLocation) {
|
|
7
|
+
const methods = {
|
|
8
|
+
annotated(message) {
|
|
9
|
+
return createRecordingRequireFacadeWithLocation(sink, message, captureLocation);
|
|
10
|
+
},
|
|
11
|
+
array(actual, options) {
|
|
12
|
+
sink.recordRequire({
|
|
13
|
+
actual,
|
|
14
|
+
check: 'array',
|
|
15
|
+
location: captureLocation(),
|
|
16
|
+
message: messageFromOptions(options, annotation),
|
|
17
|
+
source: 'require'
|
|
18
|
+
});
|
|
19
|
+
},
|
|
20
|
+
boolean(actual, options) {
|
|
21
|
+
sink.recordRequire({
|
|
22
|
+
actual,
|
|
23
|
+
check: 'boolean',
|
|
24
|
+
location: captureLocation(),
|
|
25
|
+
message: messageFromOptions(options, annotation),
|
|
26
|
+
source: 'require'
|
|
27
|
+
});
|
|
28
|
+
},
|
|
29
|
+
defined(actual, options) {
|
|
30
|
+
sink.recordRequire({
|
|
31
|
+
actual,
|
|
32
|
+
check: 'defined',
|
|
33
|
+
location: captureLocation(),
|
|
34
|
+
message: messageFromOptions(options, annotation),
|
|
35
|
+
source: 'require'
|
|
36
|
+
});
|
|
37
|
+
},
|
|
38
|
+
function(actual, options) {
|
|
39
|
+
sink.recordRequire({
|
|
40
|
+
actual,
|
|
41
|
+
check: 'function',
|
|
42
|
+
location: captureLocation(),
|
|
43
|
+
message: messageFromOptions(options, annotation),
|
|
44
|
+
source: 'require'
|
|
45
|
+
});
|
|
46
|
+
},
|
|
47
|
+
hasProperty(actual, key, options) {
|
|
48
|
+
sink.recordRequire({
|
|
49
|
+
actual,
|
|
50
|
+
check: 'has-property',
|
|
51
|
+
key,
|
|
52
|
+
location: captureLocation(),
|
|
53
|
+
message: messageFromOptions(options, annotation),
|
|
54
|
+
source: 'require'
|
|
55
|
+
});
|
|
56
|
+
},
|
|
57
|
+
instanceOf(actual, expected, options) {
|
|
58
|
+
sink.recordRequire({
|
|
59
|
+
actual,
|
|
60
|
+
check: 'instance-of',
|
|
61
|
+
expected,
|
|
62
|
+
location: captureLocation(),
|
|
63
|
+
message: messageFromOptions(options, annotation),
|
|
64
|
+
source: 'require'
|
|
65
|
+
});
|
|
66
|
+
},
|
|
67
|
+
notNull(actual, options) {
|
|
68
|
+
sink.recordRequire({
|
|
69
|
+
actual,
|
|
70
|
+
check: 'not-null',
|
|
71
|
+
location: captureLocation(),
|
|
72
|
+
message: messageFromOptions(options, annotation),
|
|
73
|
+
source: 'require'
|
|
74
|
+
});
|
|
75
|
+
},
|
|
76
|
+
null(actual, options) {
|
|
77
|
+
sink.recordRequire({
|
|
78
|
+
actual,
|
|
79
|
+
check: 'null',
|
|
80
|
+
location: captureLocation(),
|
|
81
|
+
message: messageFromOptions(options, annotation),
|
|
82
|
+
source: 'require'
|
|
83
|
+
});
|
|
84
|
+
},
|
|
85
|
+
number(actual, options) {
|
|
86
|
+
sink.recordRequire({
|
|
87
|
+
actual,
|
|
88
|
+
check: 'number',
|
|
89
|
+
location: captureLocation(),
|
|
90
|
+
message: messageFromOptions(options, annotation),
|
|
91
|
+
source: 'require'
|
|
92
|
+
});
|
|
93
|
+
},
|
|
94
|
+
object(actual, options) {
|
|
95
|
+
sink.recordRequire({
|
|
96
|
+
actual,
|
|
97
|
+
check: 'object',
|
|
98
|
+
location: captureLocation(),
|
|
99
|
+
message: messageFromOptions(options, annotation),
|
|
100
|
+
source: 'require'
|
|
101
|
+
});
|
|
102
|
+
},
|
|
103
|
+
string(actual, options) {
|
|
104
|
+
sink.recordRequire({
|
|
105
|
+
actual,
|
|
106
|
+
check: 'string',
|
|
107
|
+
location: captureLocation(),
|
|
108
|
+
message: messageFromOptions(options, annotation),
|
|
109
|
+
source: 'require'
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
function callRequireReference(reference, ...parameters) {
|
|
114
|
+
recordRequireReference({
|
|
115
|
+
annotation,
|
|
116
|
+
location: captureLocation(),
|
|
117
|
+
parameters,
|
|
118
|
+
reference,
|
|
119
|
+
sink
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
return Object.assign(callRequireReference, methods);
|
|
123
|
+
}
|
|
124
|
+
export function createRecordingRequireFacade(sink, annotation) {
|
|
125
|
+
return createRecordingRequireFacadeWithLocation(sink, annotation, captureSourceLocation);
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=require-assertion-facade.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"require-assertion-facade.js","sourceRoot":"","sources":["../../../../source/engine/require-assertion-facade.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export function invalidDeepAssertionOperandFailure(actual) {
|
|
2
|
+
return {
|
|
3
|
+
actual,
|
|
4
|
+
code: 'invalid-deep-assertion-operand',
|
|
5
|
+
expected: 'non-primitive deep assertion operand',
|
|
6
|
+
kind: 'test-contract',
|
|
7
|
+
summary: 'Deep assertions require non-primitive operands.'
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
export function verdictFromOutcome(outcome) {
|
|
11
|
+
return outcome.kind;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=run-result.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-result.js","sourceRoot":"","sources":["../../../../source/engine/run-result.ts"],"names":[],"mappings":"AA6DA,MAAM,UAAU,kCAAkC,CAAC,MAAmC;IAClF,OAAO;QACH,MAAM;QACN,IAAI,EAAE,gCAAgC;QACtC,QAAQ,EAAE,sCAAsC;QAChD,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,iDAAiD;KAC7D,CAAC;AACN,CAAC;AAmED,MAAM,UAAU,kBAAkB,CAAC,OAAoB;IACnD,OAAO,OAAO,CAAC,IAAI,CAAC;AACxB,CAAC"}
|
package/package.json
CHANGED
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
"url": "https://github.com/enormora/overkill/issues"
|
|
5
5
|
},
|
|
6
6
|
"dependencies": {
|
|
7
|
-
"@enormora/wall-clock": "0.0.3"
|
|
7
|
+
"@enormora/wall-clock": "0.0.3",
|
|
8
|
+
"diff": "9.0.0"
|
|
8
9
|
},
|
|
9
10
|
"description": "Overkill run resolution and orchestration.",
|
|
10
11
|
"engines": {
|
|
@@ -28,7 +29,11 @@
|
|
|
28
29
|
"type": "git",
|
|
29
30
|
"url": "git+https://github.com/enormora/overkill.git"
|
|
30
31
|
},
|
|
31
|
-
"sideEffects":
|
|
32
|
+
"sideEffects": [
|
|
33
|
+
"./assertion-protocol/assertion-reference.js",
|
|
34
|
+
"./engine/execution.js",
|
|
35
|
+
"./run/run.js"
|
|
36
|
+
],
|
|
32
37
|
"type": "module",
|
|
33
|
-
"version": "0.0.
|
|
38
|
+
"version": "0.0.5"
|
|
34
39
|
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { createCompositeAssertionGroup, createCompositeAssertionReferenceRecord, createNarrowingCompositeAssertionReferenceRecord, getAssertionReferenceRecord, getCompositeAssertionReferenceRecord, getNarrowingAssertionReferenceRecord, isAssertionReference, isCompositeAssertionGroup, isNarrowingAssertionReference } from "../../assertion-protocol/assertion-reference.js";
|
|
2
|
+
export { thrownMatcherChildren } from "../../assertion-protocol/thrown-matcher.js";
|
|
3
|
+
export { createThrownErrorRecord } from "../../assertion-protocol/thrown-error-record.js";
|
|
4
|
+
//# sourceMappingURL=assertion-protocol.entry-point.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assertion-protocol.entry-point.js","sourceRoot":"","sources":["../../../../../source/packages/engine/assertion-protocol.entry-point.ts"],"names":[],"mappings":"AAiBA,OAAO,EACH,6BAA6B,EAC7B,uCAAuC,EACvC,gDAAgD,EAChD,2BAA2B,EAC3B,oCAAoC,EACpC,oCAAoC,EACpC,oBAAoB,EACpB,yBAAyB,EACzB,6BAA6B,EAChC,MAAM,iDAAiD,CAAC;AA+BzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AAEnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,iDAAiD,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export { resolveRun, run } from '../../run/run.ts';
|
|
2
|
-
export type { ResolvedRun, RunDebugRequest, RunExecutionRequest, RunFacts,
|
|
2
|
+
export type { ResolvedRun, RunCaseFacts, RunCommand, RunConfig, RunDebugRequest, RunEnvironmentFacts, RunExecutionRequest, RunFacts, RunExecutionFacts, RunLoaderConfig, RunReproducibilityFacts, RunRequest, RunResolutionErrorCode, RunSeed, RunSelection, RunShard, SerializedValue } from '../../run/run.ts';
|
|
3
|
+
export { RunResolutionError } from '../../run/run.ts';
|
|
3
4
|
//# sourceMappingURL=run.entry-point.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.entry-point.d.ts","sourceRoot":"","sources":["../../../../../source/packages/run/run.entry-point.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACnD,YAAY,EACR,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,QAAQ,EACR,
|
|
1
|
+
{"version":3,"file":"run.entry-point.d.ts","sourceRoot":"","sources":["../../../../../source/packages/run/run.entry-point.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACnD,YAAY,EACR,WAAW,EACX,YAAY,EACZ,UAAU,EACV,SAAS,EACT,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,QAAQ,EACR,iBAAiB,EACjB,eAAe,EACf,uBAAuB,EACvB,UAAU,EACV,sBAAsB,EACtB,OAAO,EACP,YAAY,EACZ,QAAQ,EACR,eAAe,EAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.entry-point.js","sourceRoot":"","sources":["../../../../../source/packages/run/run.entry-point.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"run.entry-point.js","sourceRoot":"","sources":["../../../../../source/packages/run/run.entry-point.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAoBnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC"}
|
package/readme.md
CHANGED
|
@@ -4,8 +4,13 @@ Run orchestration package for turning caller intent into resolved Overkill runs.
|
|
|
4
4
|
|
|
5
5
|
Top-level API:
|
|
6
6
|
|
|
7
|
+
- `RunCommand`
|
|
7
8
|
- `RunRequest`
|
|
8
9
|
- `RunFacts`
|
|
9
10
|
- `ResolvedRun`
|
|
10
|
-
- `resolveRun(
|
|
11
|
-
- `run(
|
|
11
|
+
- `resolveRun(command)`
|
|
12
|
+
- `run(command)`
|
|
13
|
+
|
|
14
|
+
The current runner accepts an explicit `TestPlan` through `RunCommand`. File
|
|
15
|
+
discovery, config loading, filtering, sharding, seeded ordering, resources,
|
|
16
|
+
records, replay, and CLI parsing are separate runner milestones.
|
package/run/run.d.ts
CHANGED
|
@@ -1,65 +1,116 @@
|
|
|
1
|
+
import { type SerializedValue as SerializedValueShape } from '../compare/serialized-value.ts';
|
|
2
|
+
import { type Execute } from '../engine/execution.ts';
|
|
1
3
|
import type { CaseId } from '../engine/identity.ts';
|
|
2
|
-
import type
|
|
4
|
+
import { type Reporter } from '../engine/reporter.ts';
|
|
5
|
+
import type { RunResult } from '../engine/run-result.ts';
|
|
3
6
|
import type { TestPlan } from '../engine/test-plan.ts';
|
|
7
|
+
export type SerializedValue = SerializedValueShape;
|
|
4
8
|
export type RunSelection = {
|
|
5
|
-
readonly kind: 'all'
|
|
6
|
-
readonly value: string | null;
|
|
9
|
+
readonly kind: 'all';
|
|
7
10
|
};
|
|
8
11
|
export type RunShard = {
|
|
9
12
|
readonly index: number;
|
|
10
13
|
readonly total: number;
|
|
11
14
|
};
|
|
12
15
|
export type RunExecutionRequest = {
|
|
13
|
-
readonly mode:
|
|
14
|
-
readonly workers: number;
|
|
16
|
+
readonly mode: 'concurrent-in-process';
|
|
15
17
|
};
|
|
16
18
|
export type RunSeed = {
|
|
17
19
|
readonly value: bigint | null;
|
|
18
20
|
};
|
|
19
21
|
export type RunDebugRequest = {
|
|
20
|
-
readonly mode: '
|
|
21
|
-
readonly selectors: readonly
|
|
22
|
+
readonly mode: 'off';
|
|
23
|
+
readonly selectors: readonly [];
|
|
24
|
+
};
|
|
25
|
+
export type RunLoaderConfig = {
|
|
26
|
+
readonly sourceMaps: boolean;
|
|
27
|
+
readonly stripMode: 'strip-only' | 'transform';
|
|
28
|
+
};
|
|
29
|
+
export type RunConfig = {
|
|
30
|
+
readonly loader: RunLoaderConfig;
|
|
31
|
+
readonly reporters: readonly Reporter[];
|
|
32
|
+
readonly runtimeStateDir: string;
|
|
22
33
|
};
|
|
23
34
|
export type RunRequest = {
|
|
35
|
+
readonly baselineUpdateMode: 'none';
|
|
36
|
+
readonly capture: 'buffered' | 'live';
|
|
37
|
+
readonly coverage: false;
|
|
38
|
+
readonly debug: RunDebugRequest;
|
|
39
|
+
readonly execution: RunExecutionRequest;
|
|
40
|
+
readonly order: 'plan';
|
|
24
41
|
readonly paths: readonly string[];
|
|
42
|
+
readonly profile: 'microtest';
|
|
43
|
+
readonly seed: RunSeed;
|
|
25
44
|
readonly selection: RunSelection;
|
|
26
45
|
readonly shard: RunShard;
|
|
27
|
-
readonly
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
readonly
|
|
31
|
-
readonly
|
|
32
|
-
readonly
|
|
33
|
-
readonly debug: RunDebugRequest;
|
|
34
|
-
readonly configPath: string | null;
|
|
46
|
+
readonly verbose: false;
|
|
47
|
+
};
|
|
48
|
+
export type RunCommand = {
|
|
49
|
+
readonly config: RunConfig;
|
|
50
|
+
readonly request: RunRequest;
|
|
51
|
+
readonly testPlan: TestPlan;
|
|
35
52
|
};
|
|
36
53
|
export type RunFacts = {
|
|
37
|
-
readonly
|
|
38
|
-
readonly
|
|
39
|
-
readonly
|
|
40
|
-
readonly
|
|
41
|
-
readonly
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
readonly
|
|
54
|
+
readonly cases: readonly RunCaseFacts[];
|
|
55
|
+
readonly environment: RunEnvironmentFacts;
|
|
56
|
+
readonly execution: RunExecutionFacts;
|
|
57
|
+
readonly loader: RunLoaderConfig;
|
|
58
|
+
readonly reproducibility: RunReproducibilityFacts;
|
|
59
|
+
};
|
|
60
|
+
export type RunCaseFacts = {
|
|
61
|
+
readonly id: CaseId;
|
|
62
|
+
readonly metadata: SerializedValue;
|
|
63
|
+
};
|
|
64
|
+
export type RunEnvironmentFacts = {
|
|
65
|
+
readonly node: {
|
|
66
|
+
readonly arch: string;
|
|
67
|
+
readonly platform: string;
|
|
68
|
+
readonly version: string;
|
|
50
69
|
};
|
|
51
|
-
readonly
|
|
70
|
+
readonly runtimeStateDir: string;
|
|
52
71
|
};
|
|
53
|
-
export type
|
|
54
|
-
readonly
|
|
55
|
-
readonly
|
|
72
|
+
export type RunExecutionFacts = {
|
|
73
|
+
readonly baselineUpdateMode: 'none';
|
|
74
|
+
readonly capture: 'buffered' | 'live';
|
|
75
|
+
readonly coverage: false;
|
|
76
|
+
readonly debug: RunDebugRequest;
|
|
77
|
+
readonly mode: 'concurrent-in-process';
|
|
78
|
+
readonly order: 'plan';
|
|
79
|
+
readonly profile: 'microtest';
|
|
80
|
+
readonly verbose: false;
|
|
81
|
+
};
|
|
82
|
+
export type RunReproducibilityFacts = {
|
|
83
|
+
readonly seed: string;
|
|
84
|
+
readonly shard: RunShard;
|
|
56
85
|
};
|
|
57
86
|
export type ResolvedRun = {
|
|
58
|
-
readonly
|
|
87
|
+
readonly config: RunConfig;
|
|
59
88
|
readonly facts: RunFacts;
|
|
60
|
-
readonly testPlan: TestPlan;
|
|
61
89
|
readonly reporters: readonly Reporter[];
|
|
90
|
+
readonly request: RunRequest;
|
|
91
|
+
readonly testPlan: TestPlan;
|
|
92
|
+
};
|
|
93
|
+
export type RunResolutionErrorCode = 'invalid-request' | 'unsupported-request';
|
|
94
|
+
export declare class RunResolutionError extends Error {
|
|
95
|
+
private readonly errorCode;
|
|
96
|
+
constructor(message: string, options: Readonly<ErrorOptions> | undefined, code: RunResolutionErrorCode);
|
|
97
|
+
code(): RunResolutionErrorCode;
|
|
98
|
+
}
|
|
99
|
+
export type RunApiDependencies = {
|
|
100
|
+
readonly createSeed: () => bigint;
|
|
101
|
+
readonly execute: Execute;
|
|
102
|
+
readonly node: {
|
|
103
|
+
readonly arch: string;
|
|
104
|
+
readonly platform: string;
|
|
105
|
+
readonly version: string;
|
|
106
|
+
};
|
|
107
|
+
readonly readStartedAt: () => string;
|
|
108
|
+
};
|
|
109
|
+
export type RunApi = {
|
|
110
|
+
readonly resolveRun: (command: RunCommand) => Promise<ResolvedRun>;
|
|
111
|
+
readonly run: (command: RunCommand) => Promise<RunResult>;
|
|
62
112
|
};
|
|
63
|
-
export declare function
|
|
64
|
-
export declare function
|
|
113
|
+
export declare function createRunApi(dependencies: RunApiDependencies): RunApi;
|
|
114
|
+
export declare function resolveRun(command: RunCommand): Promise<ResolvedRun>;
|
|
115
|
+
export declare function run(command: RunCommand): Promise<RunResult>;
|
|
65
116
|
//# sourceMappingURL=run.d.ts.map
|
package/run/run.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../../source/run/run.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../../source/run/run.ts"],"names":[],"mappings":"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"}
|
package/run/run.js
CHANGED
|
@@ -1,12 +1,186 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { randomBytes } from 'node:crypto';
|
|
2
|
+
import { createWallClock } from '@enormora/wall-clock';
|
|
3
|
+
import { serializeValue } from "../compare/serialized-value.js";
|
|
4
|
+
import { createExecute } from "../engine/execution.js";
|
|
5
|
+
import { createReporterDispatcher } from "../engine/reporter.js";
|
|
6
|
+
const minimumSeedValue = 0n;
|
|
7
|
+
const seedByteLength = 8;
|
|
8
|
+
export class RunResolutionError extends Error {
|
|
9
|
+
errorCode;
|
|
10
|
+
constructor(message, options, code) {
|
|
11
|
+
super(message, options);
|
|
12
|
+
this.name = 'RunResolutionError';
|
|
13
|
+
this.errorCode = code;
|
|
14
|
+
}
|
|
15
|
+
code() {
|
|
16
|
+
return this.errorCode;
|
|
17
|
+
}
|
|
3
18
|
}
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
throw new Error('resolveRun() is not implemented yet.');
|
|
19
|
+
function unsupportedRequest(message) {
|
|
20
|
+
throw new RunResolutionError(message, undefined, 'unsupported-request');
|
|
7
21
|
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
22
|
+
function invalidRequest(message) {
|
|
23
|
+
throw new RunResolutionError(message, undefined, 'invalid-request');
|
|
24
|
+
}
|
|
25
|
+
function validateRunPaths(request) {
|
|
26
|
+
if (request.paths.length > 0) {
|
|
27
|
+
unsupportedRequest('Path discovery is not implemented yet.');
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
function validateRunShard(request) {
|
|
31
|
+
if (request.shard.index !== 0 || request.shard.total !== 1) {
|
|
32
|
+
unsupportedRequest('Sharding is not implemented yet.');
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function validateRunSeed(request) {
|
|
36
|
+
if (request.seed.value !== null && request.seed.value < minimumSeedValue) {
|
|
37
|
+
invalidRequest('Run seed must be a nonnegative bigint.');
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function validateRunRequest(request) {
|
|
41
|
+
validateRunPaths(request);
|
|
42
|
+
validateRunShard(request);
|
|
43
|
+
validateRunSeed(request);
|
|
44
|
+
}
|
|
45
|
+
function resolvedSeed(request, dependencies) {
|
|
46
|
+
return request.seed.value ?? dependencies.createSeed();
|
|
47
|
+
}
|
|
48
|
+
function copyLoaderConfig(loader) {
|
|
49
|
+
return {
|
|
50
|
+
sourceMaps: loader.sourceMaps,
|
|
51
|
+
stripMode: loader.stripMode
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
function copyRunShard(shard) {
|
|
55
|
+
return {
|
|
56
|
+
index: shard.index,
|
|
57
|
+
total: shard.total
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
function copyRunRequest(request) {
|
|
61
|
+
return {
|
|
62
|
+
baselineUpdateMode: request.baselineUpdateMode,
|
|
63
|
+
capture: request.capture,
|
|
64
|
+
coverage: request.coverage,
|
|
65
|
+
debug: {
|
|
66
|
+
mode: request.debug.mode,
|
|
67
|
+
selectors: []
|
|
68
|
+
},
|
|
69
|
+
execution: { mode: request.execution.mode },
|
|
70
|
+
order: request.order,
|
|
71
|
+
paths: Array.from(request.paths),
|
|
72
|
+
profile: request.profile,
|
|
73
|
+
seed: { value: request.seed.value },
|
|
74
|
+
selection: { kind: request.selection.kind },
|
|
75
|
+
shard: copyRunShard(request.shard),
|
|
76
|
+
verbose: request.verbose
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
function copyRunConfig(config) {
|
|
80
|
+
return {
|
|
81
|
+
loader: copyLoaderConfig(config.loader),
|
|
82
|
+
reporters: Array.from(config.reporters),
|
|
83
|
+
runtimeStateDir: config.runtimeStateDir
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
function runCaseFacts(metadata, id) {
|
|
87
|
+
return {
|
|
88
|
+
id,
|
|
89
|
+
metadata: serializeValue(metadata)
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
function createRunFacts(command, request, config, dependencies) {
|
|
93
|
+
return {
|
|
94
|
+
cases: command.testPlan.cases.map(function toRunCaseFacts(testCase) {
|
|
95
|
+
return runCaseFacts(testCase.metadata, testCase.id);
|
|
96
|
+
}),
|
|
97
|
+
environment: {
|
|
98
|
+
node: {
|
|
99
|
+
arch: dependencies.node.arch,
|
|
100
|
+
platform: dependencies.node.platform,
|
|
101
|
+
version: dependencies.node.version
|
|
102
|
+
},
|
|
103
|
+
runtimeStateDir: config.runtimeStateDir
|
|
104
|
+
},
|
|
105
|
+
execution: {
|
|
106
|
+
baselineUpdateMode: request.baselineUpdateMode,
|
|
107
|
+
capture: request.capture,
|
|
108
|
+
coverage: request.coverage,
|
|
109
|
+
debug: request.debug,
|
|
110
|
+
mode: request.execution.mode,
|
|
111
|
+
order: request.order,
|
|
112
|
+
profile: request.profile,
|
|
113
|
+
verbose: request.verbose
|
|
114
|
+
},
|
|
115
|
+
loader: config.loader,
|
|
116
|
+
reproducibility: {
|
|
117
|
+
seed: resolvedSeed(request, dependencies).toString(),
|
|
118
|
+
shard: request.shard
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
function freezeValue(value) {
|
|
123
|
+
if (value !== null && typeof value === 'object') {
|
|
124
|
+
for (const propertyValue of Object.values(value)) {
|
|
125
|
+
freezeValue(propertyValue);
|
|
126
|
+
}
|
|
127
|
+
Object.freeze(value);
|
|
128
|
+
}
|
|
129
|
+
return value;
|
|
130
|
+
}
|
|
131
|
+
function createResolvedRun(command, dependencies) {
|
|
132
|
+
validateRunRequest(command.request);
|
|
133
|
+
const request = freezeValue(copyRunRequest(command.request));
|
|
134
|
+
const config = freezeValue(copyRunConfig(command.config));
|
|
135
|
+
const facts = freezeValue(createRunFacts(command, request, config, dependencies));
|
|
136
|
+
return freezeValue({
|
|
137
|
+
config,
|
|
138
|
+
facts,
|
|
139
|
+
reporters: config.reporters,
|
|
140
|
+
request,
|
|
141
|
+
testPlan: command.testPlan
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
export function createRunApi(dependencies) {
|
|
145
|
+
return {
|
|
146
|
+
async resolveRun(command) {
|
|
147
|
+
return createResolvedRun(command, dependencies);
|
|
148
|
+
},
|
|
149
|
+
async run(command) {
|
|
150
|
+
const resolvedRun = createResolvedRun(command, dependencies);
|
|
151
|
+
return await dependencies.execute(resolvedRun.testPlan, {
|
|
152
|
+
execution: { mode: 'concurrent-in-process' },
|
|
153
|
+
reporters: resolvedRun.reporters,
|
|
154
|
+
runFacts: resolvedRun.facts,
|
|
155
|
+
startedAt: dependencies.readStartedAt()
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
function createDefaultSeed() {
|
|
161
|
+
return randomBytes(seedByteLength).readBigUInt64BE();
|
|
162
|
+
}
|
|
163
|
+
const defaultWallClock = createWallClock();
|
|
164
|
+
const defaultRunApi = createRunApi({
|
|
165
|
+
createSeed: createDefaultSeed,
|
|
166
|
+
execute: createExecute({
|
|
167
|
+
reporterDispatcher: createReporterDispatcher({ wallClock: defaultWallClock }),
|
|
168
|
+
wallClock: defaultWallClock
|
|
169
|
+
}),
|
|
170
|
+
node: {
|
|
171
|
+
arch: process.arch,
|
|
172
|
+
platform: process.platform,
|
|
173
|
+
version: process.versions.node
|
|
174
|
+
},
|
|
175
|
+
readStartedAt() {
|
|
176
|
+
const startedAt = new Date(defaultWallClock.currentTimestampInMilliseconds);
|
|
177
|
+
return startedAt.toISOString();
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
export async function resolveRun(command) {
|
|
181
|
+
return await defaultRunApi.resolveRun(command);
|
|
182
|
+
}
|
|
183
|
+
export async function run(command) {
|
|
184
|
+
return await defaultRunApi.run(command);
|
|
11
185
|
}
|
|
12
186
|
//# sourceMappingURL=run.js.map
|
package/run/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../../source/run/run.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../../source/run/run.ts"],"names":[],"mappings":"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"}
|