@overkill-dev/run 0.0.3 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/assertion-protocol/assertion-evaluation.js +6 -0
  2. package/assertion-protocol/assertion-evaluation.js.map +1 -0
  3. package/assertion-protocol/assertion-node.js +33 -0
  4. package/assertion-protocol/assertion-node.js.map +1 -0
  5. package/assertion-protocol/assertion-reference.js +49 -0
  6. package/assertion-protocol/assertion-reference.js.map +1 -0
  7. package/assertion-protocol/assertions/boolean.js +12 -0
  8. package/assertion-protocol/assertions/boolean.js.map +1 -0
  9. package/assertion-protocol/assertions/collection.js +21 -0
  10. package/assertion-protocol/assertions/collection.js.map +1 -0
  11. package/assertion-protocol/assertions/dispatch.js +47 -0
  12. package/assertion-protocol/assertions/dispatch.js.map +1 -0
  13. package/assertion-protocol/assertions/equality.js +24 -0
  14. package/assertion-protocol/assertions/equality.js.map +1 -0
  15. package/assertion-protocol/assertions/fail.js +8 -0
  16. package/assertion-protocol/assertions/fail.js.map +1 -0
  17. package/assertion-protocol/assertions/numeric.js +43 -0
  18. package/assertion-protocol/assertions/numeric.js.map +1 -0
  19. package/assertion-protocol/assertions/partial.js +17 -0
  20. package/assertion-protocol/assertions/partial.js.map +1 -0
  21. package/assertion-protocol/assertions/presence.js +20 -0
  22. package/assertion-protocol/assertions/presence.js.map +1 -0
  23. package/assertion-protocol/assertions/string.js +33 -0
  24. package/assertion-protocol/assertions/string.js.map +1 -0
  25. package/assertion-protocol/assertions/type-shape.js +43 -0
  26. package/assertion-protocol/assertions/type-shape.js.map +1 -0
  27. package/assertion-protocol/collection-count.js +42 -0
  28. package/assertion-protocol/collection-count.js.map +1 -0
  29. package/assertion-protocol/evaluation.js +170 -0
  30. package/assertion-protocol/evaluation.js.map +1 -0
  31. package/assertion-protocol/partial-matching.js +13 -0
  32. package/assertion-protocol/partial-matching.js.map +1 -0
  33. package/assertion-protocol/source-location.js +76 -0
  34. package/assertion-protocol/source-location.js.map +1 -0
  35. package/assertion-protocol/thrown-error-record.js +17 -0
  36. package/assertion-protocol/thrown-error-record.js.map +1 -0
  37. package/assertion-protocol/thrown-matcher.js +201 -0
  38. package/assertion-protocol/thrown-matcher.js.map +1 -0
  39. package/compare/comparison-result.js +47 -0
  40. package/compare/comparison-result.js.map +1 -0
  41. package/compare/comparison-state.js +20 -0
  42. package/compare/comparison-state.js.map +1 -0
  43. package/compare/comparison.js +78 -0
  44. package/compare/comparison.js.map +1 -0
  45. package/compare/diff-path.js +37 -0
  46. package/compare/diff-path.js.map +1 -0
  47. package/compare/raw-comparison.js +285 -0
  48. package/compare/raw-comparison.js.map +1 -0
  49. package/compare/serialized-value-classification.js +99 -0
  50. package/compare/serialized-value-classification.js.map +1 -0
  51. package/compare/serialized-value-shape.js +12 -0
  52. package/compare/serialized-value-shape.js.map +1 -0
  53. package/compare/serialized-value-state.js +55 -0
  54. package/compare/serialized-value-state.js.map +1 -0
  55. package/compare/serialized-value.js +387 -0
  56. package/compare/serialized-value.js.map +1 -0
  57. package/compare/structured-diff.js +382 -0
  58. package/compare/structured-diff.js.map +1 -0
  59. package/compare/value-classification.js +112 -0
  60. package/compare/value-classification.js.map +1 -0
  61. package/diff/binary-diff.js +49 -0
  62. package/diff/binary-diff.js.map +1 -0
  63. package/diff/string-diff.js +22 -0
  64. package/diff/string-diff.js.map +1 -0
  65. package/engine/assertion-facade.js +361 -0
  66. package/engine/assertion-facade.js.map +1 -0
  67. package/engine/case-execution.js +408 -0
  68. package/engine/case-execution.js.map +1 -0
  69. package/engine/custom-assertion-recording.js +175 -0
  70. package/engine/custom-assertion-recording.js.map +1 -0
  71. package/engine/execution.d.ts +20 -0
  72. package/engine/execution.d.ts.map +1 -0
  73. package/engine/execution.js +323 -0
  74. package/engine/execution.js.map +1 -0
  75. package/engine/identity.js +5 -0
  76. package/engine/identity.js.map +1 -0
  77. package/engine/reporter-event-queue.js +23 -0
  78. package/engine/reporter-event-queue.js.map +1 -0
  79. package/engine/reporter.d.ts +5 -0
  80. package/engine/reporter.d.ts.map +1 -1
  81. package/engine/reporter.js +177 -0
  82. package/engine/reporter.js.map +1 -0
  83. package/engine/require-assertion-facade.js +127 -0
  84. package/engine/require-assertion-facade.js.map +1 -0
  85. package/engine/run-result.js +13 -0
  86. package/engine/run-result.js.map +1 -0
  87. package/engine/test-node.d.ts +17 -1
  88. package/engine/test-node.d.ts.map +1 -1
  89. package/engine/test-plan.d.ts +8 -2
  90. package/engine/test-plan.d.ts.map +1 -1
  91. package/package.json +8 -3
  92. package/packages/engine/assertion-protocol.entry-point.js +4 -0
  93. package/packages/engine/assertion-protocol.entry-point.js.map +1 -0
  94. package/packages/run/run.entry-point.d.ts +2 -1
  95. package/packages/run/run.entry-point.d.ts.map +1 -1
  96. package/packages/run/run.entry-point.js +1 -0
  97. package/packages/run/run.entry-point.js.map +1 -1
  98. package/readme.md +7 -2
  99. package/run/run.d.ts +87 -36
  100. package/run/run.d.ts.map +1 -1
  101. package/run/run.js +182 -8
  102. package/run/run.js.map +1 -1
  103. 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"}
@@ -3,6 +3,7 @@ import type { NonEmptyReadonlyArray } from '../assertion-protocol/assertion-node
3
3
  import type { AssertAssertionFacade } from './assertion-facade.ts';
4
4
  import type { RequireAssertionFacade } from './require-assertion-facade.ts';
5
5
  declare const testNodeBrand: unique symbol;
6
+ declare const testRootBrand: unique symbol;
6
7
  declare const testNodeOwnerBrand: unique symbol;
7
8
  declare const testNodeOwnerIdentity: unique symbol;
8
9
  export type Metadata = Readonly<Record<string, unknown>>;
@@ -46,10 +47,19 @@ export type Table = {
46
47
  readonly name: string;
47
48
  };
48
49
  export type TestNode = Suite | Table | TestCase;
50
+ export type TestRoot = {
51
+ readonly [testRootBrand]: true;
52
+ readonly [testNodeOwnerBrand]: TestNodeOwner;
53
+ readonly children: readonly TestNode[];
54
+ readonly kind: 'root';
55
+ readonly metadata: Metadata;
56
+ readonly name: string;
57
+ };
49
58
  export type TestNodeOwner = {
50
59
  readonly [testNodeOwnerIdentity]: true;
51
60
  };
52
61
  export type TestNodeFactory = {
62
+ readonly createRoot: (options: RootOptions) => TestRoot;
53
63
  readonly createSuite: (options: SuiteOptions) => Suite;
54
64
  readonly createTable: (options: TableOptions) => Table;
55
65
  readonly createTestCase: (options: TestCaseOptions) => TestCase;
@@ -63,6 +73,11 @@ export type TestCaseOptions = {
63
73
  readonly metadata: Metadata;
64
74
  readonly name: string;
65
75
  };
76
+ export type RootOptions = {
77
+ readonly children: readonly unknown[];
78
+ readonly metadata: Metadata;
79
+ readonly name: string;
80
+ };
66
81
  export type SuiteOptions = {
67
82
  readonly children: readonly unknown[];
68
83
  readonly metadata: Metadata;
@@ -81,7 +96,8 @@ export type TableOptions = {
81
96
  };
82
97
  export declare function createTestNodeOwner(): TestNodeOwner;
83
98
  export declare function isTestNode(value: unknown): value is TestNode;
84
- export declare function ensureOwnedTestNode(value: unknown, owner: TestNodeOwner, plainObjectMessage: string, foreignNodeMessage: string): asserts value is TestNode;
99
+ export declare function isTestRoot(value: unknown): value is TestRoot;
100
+ export declare function ensureOwnedTestRoot(value: unknown, owner: TestNodeOwner, plainObjectMessage: string, foreignRootMessage: string): asserts value is TestRoot;
85
101
  export declare function createTestNodeFactory(factoryOptions: TestNodeFactoryOptions): TestNodeFactory;
86
102
  export declare function mergeMetadata(parent: Metadata, child: Metadata): Metadata;
87
103
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"test-node.d.ts","sourceRoot":"","sources":["../../../../source/engine/test-node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test-node.d.ts","sourceRoot":"","sources":["../../../../source/engine/test-node.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import type { NonEmptyReadonlyArray } from '../assertion-protocol/assertion-node-shape.ts';
2
2
  import { type CaseId } from './identity.ts';
3
3
  import type { OrphanedNode } from './run-result.ts';
4
- import { type Metadata, type TestBody, type TestNode, type TestNodeOwner } from './test-node.ts';
4
+ import { type Metadata, type TestBody, type TestNode, type TestNodeOwner, type TestRoot } from './test-node.ts';
5
5
  export type TestPlanCaseBody = TestBody;
6
6
  export type TestPlanCase = {
7
7
  readonly id: CaseId;
@@ -14,7 +14,13 @@ export type TestPlan = {
14
14
  readonly cases: NonEmptyReadonlyArray<TestPlanCase>;
15
15
  readonly discoveredCases: NonEmptyReadonlyArray<TestPlanCase>;
16
16
  readonly orphans: readonly OrphanedNode[];
17
+ readonly root: TestPlanRoot;
17
18
  };
18
- export type TestPlanFactory = (root: TestNode) => TestPlan;
19
+ type TestPlanRoot = {
20
+ readonly metadata: Metadata;
21
+ readonly name: string;
22
+ };
23
+ export type TestPlanFactory = (root: TestRoot) => TestPlan;
19
24
  export declare function createTestPlanFactory(owner: TestNodeOwner, constructedNodes: ReadonlySet<TestNode>): TestPlanFactory;
25
+ export {};
20
26
  //# sourceMappingURL=test-plan.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"test-plan.d.ts","sourceRoot":"","sources":["../../../../source/engine/test-plan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AAC3F,OAAO,EAA+C,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAGH,KAAK,QAAQ,EAEb,KAAK,QAAQ,EAEb,KAAK,QAAQ,EACb,KAAK,aAAa,EACrB,MAAM,gBAAgB,CAAC;AAExB,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;AAExC,MAAM,MAAM,YAAY,GAAG;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACnB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC,YAAY,CAAC,CAAC;IACpD,QAAQ,CAAC,eAAe,EAAE,qBAAqB,CAAC,YAAY,CAAC,CAAC;IAC9D,QAAQ,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,QAAQ,KAAK,QAAQ,CAAC;AA4I3D,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,eAAe,CAqBpH"}
1
+ {"version":3,"file":"test-plan.d.ts","sourceRoot":"","sources":["../../../../source/engine/test-plan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AAC3F,OAAO,EAA+C,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAGH,KAAK,QAAQ,EAEb,KAAK,QAAQ,EAEb,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,QAAQ,EAChB,MAAM,gBAAgB,CAAC;AAExB,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;AAExC,MAAM,MAAM,YAAY,GAAG;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACnB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC,YAAY,CAAC,CAAC;IACpD,QAAQ,CAAC,eAAe,EAAE,qBAAqB,CAAC,YAAY,CAAC,CAAC;IAC9D,QAAQ,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;IAC1C,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;CAC/B,CAAC;AAEF,KAAK,YAAY,GAAG;IAChB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,QAAQ,KAAK,QAAQ,CAAC;AAsJ3D,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,eAAe,CAyBpH"}
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": false,
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.3"
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, RunFactsDebug, RunRequest, RunSeed, RunSelection, RunShard } from '../../run/run.ts';
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,aAAa,EACb,UAAU,EACV,OAAO,EACP,YAAY,EACZ,QAAQ,EACX,MAAM,kBAAkB,CAAC"}
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,2 +1,3 @@
1
1
  export { resolveRun, run } from "../../run/run.js";
2
+ export { RunResolutionError } from "../../run/run.js";
2
3
  //# sourceMappingURL=run.entry-point.js.map
@@ -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(request)`
11
- - `run(request)`
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 { Reporter } from '../engine/reporter.ts';
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' | 'case-id' | 'file' | 'filter' | 'last-failed' | 'name';
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: string;
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: 'all' | 'off' | 'selected';
21
- readonly selectors: readonly string[];
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 profile: string;
28
- readonly execution: RunExecutionRequest;
29
- readonly coverage: boolean;
30
- readonly capture: 'buffered' | 'live';
31
- readonly seed: RunSeed;
32
- readonly order: 'lexical' | 'seeded';
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 seed: bigint;
38
- readonly identities: readonly CaseId[];
39
- readonly executionStrategy: string;
40
- readonly capabilityProfile: string;
41
- readonly baselineUpdateMode: 'apply' | 'bootstrap' | 'diff' | 'none' | 'update';
42
- readonly loaderConfig: {
43
- readonly stripMode: 'strip-only' | 'transform';
44
- readonly sourceMaps: boolean;
45
- };
46
- readonly versions: {
47
- readonly engine: string;
48
- readonly node: string;
49
- readonly packages: Readonly<Record<string, string>>;
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 debug: RunFactsDebug;
70
+ readonly runtimeStateDir: string;
52
71
  };
53
- export type RunFactsDebug = {
54
- readonly mode: 'all' | 'off' | 'selected';
55
- readonly caseIds: readonly CaseId[];
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 request: RunRequest;
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 resolveRun(request: RunRequest): Promise<ResolvedRun>;
64
- export declare function run(request: RunRequest): Promise<never>;
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":"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"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../../source/run/run.ts"],"names":[],"mappings":"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"}