@overkill-dev/run 0.0.4 → 0.0.6

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 (109) 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.js +177 -0
  80. package/engine/reporter.js.map +1 -0
  81. package/engine/require-assertion-facade.js +127 -0
  82. package/engine/require-assertion-facade.js.map +1 -0
  83. package/engine/run-result.js +13 -0
  84. package/engine/run-result.js.map +1 -0
  85. package/package.json +17 -3
  86. package/packages/engine/assertion-protocol.entry-point.js +4 -0
  87. package/packages/engine/assertion-protocol.entry-point.js.map +1 -0
  88. package/packages/run/command-line.entry-point.d.ts +5 -0
  89. package/packages/run/command-line.entry-point.d.ts.map +1 -0
  90. package/packages/run/command-line.entry-point.js +3 -0
  91. package/packages/run/command-line.entry-point.js.map +1 -0
  92. package/packages/run/run.entry-point.d.ts +2 -2
  93. package/packages/run/run.entry-point.d.ts.map +1 -1
  94. package/packages/run/run.entry-point.js +1 -1
  95. package/packages/run/run.entry-point.js.map +1 -1
  96. package/readme.md +16 -2
  97. package/run/command-line-runner.d.ts +35 -0
  98. package/run/command-line-runner.d.ts.map +1 -0
  99. package/run/command-line-runner.js +109 -0
  100. package/run/command-line-runner.js.map +1 -0
  101. package/run/run-config.d.ts +24 -0
  102. package/run/run-config.d.ts.map +1 -0
  103. package/run/run-config.js +123 -0
  104. package/run/run-config.js.map +1 -0
  105. package/run/run.d.ts +86 -36
  106. package/run/run.d.ts.map +1 -1
  107. package/run/run.js +177 -8
  108. package/run/run.js.map +1 -1
  109. package/sbom.cdx.json +74 -6
@@ -0,0 +1,361 @@
1
+ import { captureSourceLocation } from "../assertion-protocol/source-location.js";
2
+ import { createThrownMatcherAssertion } from "../assertion-protocol/thrown-matcher.js";
3
+ import { recordAssertReference } from "./custom-assertion-recording.js";
4
+ function messageFromOptions(options, annotation) {
5
+ return options?.message ?? annotation;
6
+ }
7
+ function assertAssertionMetadata(options, annotation, captureLocation) {
8
+ return {
9
+ location: captureLocation(),
10
+ message: messageFromOptions(options, annotation),
11
+ source: 'assert'
12
+ };
13
+ }
14
+ function isAssertMethodName(methods, property) {
15
+ return typeof property === 'string' && Object.hasOwn(methods, property);
16
+ }
17
+ function isAssertAssertionFacade(value, methods) {
18
+ return typeof value === 'function' &&
19
+ Object.keys(methods).every(function methodIsAvailable(methodName) {
20
+ return typeof Reflect.get(value, methodName) === 'function';
21
+ });
22
+ }
23
+ export function createRecordingAssertFacadeWithLocation(sink, annotation, captureLocation) {
24
+ const methods = {
25
+ annotated(message) {
26
+ return createRecordingAssertFacadeWithLocation(sink, message, captureLocation);
27
+ },
28
+ array(actual, options) {
29
+ sink.recordAssert({
30
+ actual,
31
+ check: 'array',
32
+ ...assertAssertionMetadata(options, annotation, captureLocation)
33
+ });
34
+ },
35
+ arrayContainsPartial(actual, expected, options) {
36
+ sink.recordAssert({
37
+ actual,
38
+ check: 'array-contains-partial',
39
+ expected,
40
+ ...assertAssertionMetadata(options, annotation, captureLocation)
41
+ });
42
+ },
43
+ between(actual, minimum, maximum, options) {
44
+ sink.recordAssert({
45
+ actual,
46
+ check: 'between',
47
+ maximum,
48
+ minimum,
49
+ ...assertAssertionMetadata(options, annotation, captureLocation)
50
+ });
51
+ },
52
+ boolean(actual, options) {
53
+ sink.recordAssert({
54
+ actual,
55
+ check: 'boolean',
56
+ ...assertAssertionMetadata(options, annotation, captureLocation)
57
+ });
58
+ },
59
+ deepEqual(actual, expected, options) {
60
+ sink.recordAssert({
61
+ actual,
62
+ check: 'deep-equal',
63
+ expected,
64
+ ...assertAssertionMetadata(options, annotation, captureLocation)
65
+ });
66
+ },
67
+ defined(actual, options) {
68
+ sink.recordAssert({
69
+ actual,
70
+ check: 'defined',
71
+ ...assertAssertionMetadata(options, annotation, captureLocation)
72
+ });
73
+ },
74
+ empty(actual, options) {
75
+ sink.recordAssert({
76
+ actual,
77
+ check: 'empty',
78
+ ...assertAssertionMetadata(options, annotation, captureLocation)
79
+ });
80
+ },
81
+ endsWith(actual, expected, options) {
82
+ sink.recordAssert({
83
+ actual,
84
+ check: 'ends-with',
85
+ expected,
86
+ ...assertAssertionMetadata(options, annotation, captureLocation)
87
+ });
88
+ },
89
+ equal(actual, expected, options) {
90
+ sink.recordAssert({
91
+ actual,
92
+ check: 'equal',
93
+ expected,
94
+ ...assertAssertionMetadata(options, annotation, captureLocation)
95
+ });
96
+ },
97
+ fail(options) {
98
+ sink.recordAssert({
99
+ check: 'fail',
100
+ ...assertAssertionMetadata(options, annotation, captureLocation)
101
+ });
102
+ },
103
+ false(actual, options) {
104
+ sink.recordAssert({
105
+ actual,
106
+ check: 'false',
107
+ ...assertAssertionMetadata(options, annotation, captureLocation)
108
+ });
109
+ },
110
+ function(actual, options) {
111
+ sink.recordAssert({
112
+ actual,
113
+ check: 'function',
114
+ ...assertAssertionMetadata(options, annotation, captureLocation)
115
+ });
116
+ },
117
+ greaterThan(actual, expected, options) {
118
+ sink.recordAssert({
119
+ actual,
120
+ check: 'greater-than',
121
+ expected,
122
+ ...assertAssertionMetadata(options, annotation, captureLocation)
123
+ });
124
+ },
125
+ greaterThanOrEqual(actual, expected, options) {
126
+ sink.recordAssert({
127
+ actual,
128
+ check: 'greater-than-or-equal',
129
+ expected,
130
+ ...assertAssertionMetadata(options, annotation, captureLocation)
131
+ });
132
+ },
133
+ hasProperty(actual, key, options) {
134
+ sink.recordAssert({
135
+ actual,
136
+ check: 'has-property',
137
+ key,
138
+ ...assertAssertionMetadata(options, annotation, captureLocation)
139
+ });
140
+ },
141
+ includes(actual, expected, options) {
142
+ sink.recordAssert({
143
+ actual,
144
+ check: 'includes',
145
+ expected,
146
+ ...assertAssertionMetadata(options, annotation, captureLocation)
147
+ });
148
+ },
149
+ instanceOf(actual, expected, options) {
150
+ sink.recordAssert({
151
+ actual,
152
+ check: 'instance-of',
153
+ expected,
154
+ ...assertAssertionMetadata(options, annotation, captureLocation)
155
+ });
156
+ },
157
+ length(actual, expectedLength, options) {
158
+ sink.recordAssert({
159
+ actual,
160
+ check: 'length',
161
+ expectedLength,
162
+ ...assertAssertionMetadata(options, annotation, captureLocation)
163
+ });
164
+ },
165
+ lessThan(actual, expected, options) {
166
+ sink.recordAssert({
167
+ actual,
168
+ check: 'less-than',
169
+ expected,
170
+ ...assertAssertionMetadata(options, annotation, captureLocation)
171
+ });
172
+ },
173
+ lessThanOrEqual(actual, expected, options) {
174
+ sink.recordAssert({
175
+ actual,
176
+ check: 'less-than-or-equal',
177
+ expected,
178
+ ...assertAssertionMetadata(options, annotation, captureLocation)
179
+ });
180
+ },
181
+ match(actual, pattern, options) {
182
+ sink.recordAssert({
183
+ actual,
184
+ check: 'match',
185
+ pattern,
186
+ ...assertAssertionMetadata(options, annotation, captureLocation)
187
+ });
188
+ },
189
+ membersPartialDeepEqual(actual, expected, options) {
190
+ sink.recordAssert({
191
+ actual,
192
+ check: 'members-partial-deep-equal',
193
+ expected,
194
+ ...assertAssertionMetadata(options, annotation, captureLocation)
195
+ });
196
+ },
197
+ notDeepEqual(actual, expected, options) {
198
+ sink.recordAssert({
199
+ actual,
200
+ check: 'not-deep-equal',
201
+ expected,
202
+ ...assertAssertionMetadata(options, annotation, captureLocation)
203
+ });
204
+ },
205
+ notEmpty(actual, options) {
206
+ sink.recordAssert({
207
+ actual,
208
+ check: 'not-empty',
209
+ ...assertAssertionMetadata(options, annotation, captureLocation)
210
+ });
211
+ },
212
+ notEqual(actual, expected, options) {
213
+ sink.recordAssert({
214
+ actual,
215
+ check: 'not-equal',
216
+ expected,
217
+ ...assertAssertionMetadata(options, annotation, captureLocation)
218
+ });
219
+ },
220
+ notMatch(actual, pattern, options) {
221
+ sink.recordAssert({
222
+ actual,
223
+ check: 'not-match',
224
+ pattern,
225
+ ...assertAssertionMetadata(options, annotation, captureLocation)
226
+ });
227
+ },
228
+ notNull(actual, options) {
229
+ sink.recordAssert({
230
+ actual,
231
+ check: 'not-null',
232
+ ...assertAssertionMetadata(options, annotation, captureLocation)
233
+ });
234
+ },
235
+ null(actual, options) {
236
+ sink.recordAssert({
237
+ actual,
238
+ check: 'null',
239
+ ...assertAssertionMetadata(options, annotation, captureLocation)
240
+ });
241
+ },
242
+ number(actual, options) {
243
+ sink.recordAssert({
244
+ actual,
245
+ check: 'number',
246
+ ...assertAssertionMetadata(options, annotation, captureLocation)
247
+ });
248
+ },
249
+ object(actual, options) {
250
+ sink.recordAssert({
251
+ actual,
252
+ check: 'object',
253
+ ...assertAssertionMetadata(options, annotation, captureLocation)
254
+ });
255
+ },
256
+ partialDeepEqual(actual, expected, options) {
257
+ sink.recordAssert({
258
+ actual,
259
+ check: 'partial-deep-equal',
260
+ expected,
261
+ ...assertAssertionMetadata(options, annotation, captureLocation)
262
+ });
263
+ },
264
+ async rejects(thunk, matcher, options) {
265
+ const metadata = assertAssertionMetadata(options, annotation, captureLocation);
266
+ const promise = thunk();
267
+ const pending = sink.recordPendingAssert();
268
+ try {
269
+ const value = await promise;
270
+ pending.resolve(createThrownMatcherAssertion({
271
+ kind: 'rejects',
272
+ matcher,
273
+ ...metadata,
274
+ observation: { status: 'resolved', value }
275
+ }));
276
+ }
277
+ catch (error) {
278
+ pending.resolve(createThrownMatcherAssertion({
279
+ kind: 'rejects',
280
+ matcher,
281
+ ...metadata,
282
+ observation: { status: 'rejected', value: error }
283
+ }));
284
+ }
285
+ },
286
+ startsWith(actual, expected, options) {
287
+ sink.recordAssert({
288
+ actual,
289
+ check: 'starts-with',
290
+ expected,
291
+ ...assertAssertionMetadata(options, annotation, captureLocation)
292
+ });
293
+ },
294
+ string(actual, options) {
295
+ sink.recordAssert({
296
+ actual,
297
+ check: 'string',
298
+ ...assertAssertionMetadata(options, annotation, captureLocation)
299
+ });
300
+ },
301
+ throws(body, matcher, options) {
302
+ const metadata = assertAssertionMetadata(options, annotation, captureLocation);
303
+ try {
304
+ const value = body();
305
+ sink.recordAssert(createThrownMatcherAssertion({
306
+ kind: 'throws',
307
+ matcher,
308
+ ...metadata,
309
+ observation: { status: 'returned', value }
310
+ }));
311
+ }
312
+ catch (error) {
313
+ sink.recordAssert(createThrownMatcherAssertion({
314
+ kind: 'throws',
315
+ matcher,
316
+ ...metadata,
317
+ observation: { status: 'threw', value: error }
318
+ }));
319
+ }
320
+ },
321
+ true(actual, options) {
322
+ sink.recordAssert({
323
+ actual,
324
+ check: 'true',
325
+ ...assertAssertionMetadata(options, annotation, captureLocation)
326
+ });
327
+ },
328
+ undefined(actual, options) {
329
+ sink.recordAssert({
330
+ actual,
331
+ check: 'undefined',
332
+ ...assertAssertionMetadata(options, annotation, captureLocation)
333
+ });
334
+ }
335
+ };
336
+ function callAssertReference(reference, ...parameters) {
337
+ return recordAssertReference({
338
+ annotation,
339
+ location: captureLocation(),
340
+ parameters,
341
+ reference,
342
+ sink
343
+ });
344
+ }
345
+ const facade = new Proxy(callAssertReference, {
346
+ get(target, property, receiver) {
347
+ if (isAssertMethodName(methods, property)) {
348
+ return methods[property];
349
+ }
350
+ return Reflect.get(target, property, receiver);
351
+ }
352
+ });
353
+ if (isAssertAssertionFacade(facade, methods)) {
354
+ return facade;
355
+ }
356
+ throw new TypeError('Failed to create assert facade.');
357
+ }
358
+ export function createRecordingAssertFacade(sink, annotation) {
359
+ return createRecordingAssertFacadeWithLocation(sink, annotation, captureSourceLocation);
360
+ }
361
+ //# sourceMappingURL=assertion-facade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assertion-facade.js","sourceRoot":"","sources":["../../../../source/engine/assertion-facade.ts"],"names":[],"mappings":"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"}