@overkill-dev/test 0.0.9 → 0.0.10

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/package.json CHANGED
@@ -7,13 +7,14 @@
7
7
  "url": "https://github.com/enormora/overkill/issues"
8
8
  },
9
9
  "dependencies": {
10
- "@overkill-dev/assert": "0.0.25",
11
- "@overkill-dev/engine": "0.0.24",
12
- "@overkill-dev/output-renderer-github-actions": "0.0.14",
13
- "@overkill-dev/reporter-brief": "0.0.14",
14
- "@overkill-dev/reporter-dot": "0.0.25",
15
- "@overkill-dev/reporter-line": "0.0.25",
16
- "@overkill-dev/run": "0.0.29",
10
+ "@overkill-dev/assert": "0.0.26",
11
+ "@overkill-dev/doubles": "0.0.24",
12
+ "@overkill-dev/engine": "0.0.25",
13
+ "@overkill-dev/output-renderer-github-actions": "0.0.15",
14
+ "@overkill-dev/reporter-brief": "0.0.15",
15
+ "@overkill-dev/reporter-dot": "0.0.26",
16
+ "@overkill-dev/reporter-line": "0.0.26",
17
+ "@overkill-dev/run": "0.0.30",
17
18
  "cmd-ts": "0.15.0"
18
19
  },
19
20
  "description": "Standard Overkill distribution and command-line binary.",
@@ -71,5 +72,5 @@
71
72
  "./packages/test/test.entry-point.js"
72
73
  ],
73
74
  "type": "module",
74
- "version": "0.0.9"
75
+ "version": "0.0.10"
75
76
  }
@@ -1,4 +1,6 @@
1
1
  import { type Metadata, type OutputRenderer, type Reporter, type Suite, type Table, type TestBody, type TestCase, type TestNode, type TestScope } from '@overkill-dev/engine';
2
+ export { doubleUsage, rule, testAsyncDisposable, testAsyncIterable, testAsyncIterator, testDisposable, testDouble, testIterable, testIterator } from '@overkill-dev/doubles';
3
+ export type { AsyncDisposableConfiguration, AsyncIterableConfiguration, AsyncIteratorConfiguration, AsyncIteratorSource, DisposableConfiguration, DoubleCall, DoubleConstruction, DoubleHistory, DoubleInteraction, DoubleInvocation, DoubleIteratorEvent, DoubleIteratorReturnEvent, DoubleIteratorThrowEvent, DoubleIteratorYieldEvent, DoubleResult, DoubleReturnedResult, DoubleThrownResult, DoubleUsageAssertions, ProtocolMethodConfiguration, RuleFactory, SyncIterableConfiguration, SyncIteratorConfiguration, SyncIteratorSource, TestAsyncDisposable, TestAsyncDisposableFactory, TestAsyncIterable, TestAsyncIterableFactory, TestAsyncIterator, TestAsyncIteratorFactory, TestDisposable, TestDisposableFactory, TestDouble, TestDoubleFactory, TestIterable, TestIterableFactory, TestIterator, TestIteratorFactory } from '@overkill-dev/doubles';
2
4
  type UnavailableAuthoringApi = (...parameters: readonly unknown[]) => never;
3
5
  export type RunIfMainRootOptions = {
4
6
  readonly metadata: Metadata;
@@ -21,13 +23,16 @@ export type TableDefinition<Row> = {
21
23
  readonly test: TableTestBody<Row>;
22
24
  readonly title: string;
23
25
  };
26
+ type MacroFactory<MacroParameters extends readonly unknown[], Node extends TestNode> = (...parameters: MacroParameters) => Node;
27
+ type ParameterizedTestBody<Data> = (scope: TestScope, data: Data) => ReturnType<TestBody>;
24
28
  export declare function test(...input: readonly [definition: Readonly<Pick<TestCase, 'body' | 'metadata' | 'title'>>]): TestCase;
25
29
  export declare function test(...input: readonly [title: string, body: TestBody]): TestCase;
26
30
  export declare function suite(...input: readonly [definition: Readonly<Pick<Suite, 'children' | 'metadata' | 'title'>>]): Suite;
27
31
  export declare function suite(...input: readonly [title: string, children: readonly TestNode[]]): Suite;
28
32
  export declare function table<Row>(definition: TableDefinition<Row>): Table;
29
33
  export declare const createTestFacade: UnavailableAuthoringApi;
30
- export declare const defineMacro: UnavailableAuthoringApi;
34
+ export declare function defineMacro<const MacroParameters extends readonly unknown[], Node extends TestNode>(factory: MacroFactory<MacroParameters, Node>): MacroFactory<MacroParameters, Node>;
35
+ export declare function defineParameterizedTestBody<Data>(body: ParameterizedTestBody<Data>): (data: Data) => TestBody;
31
36
  export declare function runIfMain(meta: Readonly<ImportMeta>, testNode: TestNode, options?: RunIfMainOptions): Promise<void>;
32
37
  export type { Metadata, OutputRenderer, Reporter, Suite, Table, TestBody, TestCase, TestNode, TestScope, TestScopeAssertContext } from '@overkill-dev/engine';
33
38
  //# sourceMappingURL=test.entry-point.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"test.entry-point.d.ts","sourceRoot":"","sources":["../../../../../source/packages/test/test.entry-point.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test.entry-point.d.ts","sourceRoot":"","sources":["../../../../../source/packages/test/test.entry-point.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,11 @@
1
- import { captureSourceLocation, createSuite, createTable, createTestCase } from "@overkill-dev/engine";
1
+ import { captureSourceLocation, createSuite, createTable, createTestCase, forwardAssertionSourceLocations, ownsTestNode } from "@overkill-dev/engine";
2
+ export { doubleUsage, rule, testAsyncDisposable, testAsyncIterable, testAsyncIterator, testDisposable, testDouble, testIterable, testIterator } from "@overkill-dev/doubles";
2
3
  const singleArgumentCount = 1;
3
4
  const positionalArgumentCount = 2;
4
5
  const testArgumentsError = 'test() requires (title, body) or ({ title, metadata, body }).';
5
6
  const suiteArgumentsError = 'suite() requires (title, children) or ({ title, metadata, children }).';
6
7
  const tableArgumentsError = 'table() requires ({ title, cases, metadata?, caseTitle?, test }).';
8
+ const activeMacroDefinitionLocations = [];
7
9
  function createUnavailableAuthoringApi(name) {
8
10
  return function unavailableAuthoringApi() {
9
11
  throw new Error(`The @overkill-dev/test ${name}() authoring API is not implemented yet.`);
@@ -74,6 +76,38 @@ function readSuiteDefinition(value) {
74
76
  function defaultCaseTitle(index) {
75
77
  return `case ${index + 1}`;
76
78
  }
79
+ function captureAuthoringLocation() {
80
+ return captureSourceLocation()();
81
+ }
82
+ function currentMacroDefinitionLocations() {
83
+ return activeMacroDefinitionLocations.at(-1) ?? [];
84
+ }
85
+ function sourceLocationsWithTrailingLocation(sourceLocations, location) {
86
+ const firstLocation = sourceLocations[0];
87
+ return firstLocation === undefined
88
+ ? [location]
89
+ : [firstLocation, ...sourceLocations.slice(1), location];
90
+ }
91
+ function definitionLocationsForAuthoringCall() {
92
+ return sourceLocationsWithTrailingLocation(currentMacroDefinitionLocations(), captureAuthoringLocation());
93
+ }
94
+ function runWithForwardedSourceLocations(sourceLocations, body) {
95
+ const firstLocation = sourceLocations[0];
96
+ return firstLocation === undefined
97
+ ? body()
98
+ : forwardAssertionSourceLocations([firstLocation, ...sourceLocations.slice(1)], body);
99
+ }
100
+ function assertionBodyForActiveMacro(body) {
101
+ const sourceLocations = currentMacroDefinitionLocations();
102
+ if (sourceLocations.length === 0) {
103
+ return body;
104
+ }
105
+ return async function runMacroGeneratedTestBody(scope) {
106
+ return await runWithForwardedSourceLocations(sourceLocations, async function runBody() {
107
+ return await body(scope);
108
+ });
109
+ };
110
+ }
77
111
  function tableCaseTitle(caseTitle, parameters, index) {
78
112
  const title = caseTitle === null ? defaultCaseTitle(index) : caseTitle(parameters, index);
79
113
  if (typeof title !== 'string') {
@@ -81,9 +115,11 @@ function tableCaseTitle(caseTitle, parameters, index) {
81
115
  }
82
116
  return title;
83
117
  }
84
- function tableCaseBody(definition, parameters) {
118
+ function tableCaseBody(definition, parameters, sourceLocations) {
85
119
  return async function runTableCase(scope) {
86
- return await definition.test({ ...scope, parameters });
120
+ return await runWithForwardedSourceLocations(sourceLocations, async function runMacroGeneratedTableCase() {
121
+ return await definition.test({ ...scope, parameters });
122
+ });
87
123
  };
88
124
  }
89
125
  function ensureTableDefinitionShape(definition) {
@@ -109,9 +145,10 @@ function readTableDefinition(definition) {
109
145
  };
110
146
  }
111
147
  function tableCases(definition) {
148
+ const sourceLocations = currentMacroDefinitionLocations();
112
149
  return definition.cases.map(function createTableCase(parameters, index) {
113
150
  return {
114
- body: tableCaseBody(definition, parameters),
151
+ body: tableCaseBody(definition, parameters, sourceLocations),
115
152
  metadata: {},
116
153
  parameters,
117
154
  title: tableCaseTitle(definition.caseTitle, parameters, index)
@@ -122,8 +159,8 @@ export function test(...input) {
122
159
  if (input.length === singleArgumentCount) {
123
160
  const definition = readTestDefinition(input[0]);
124
161
  return createTestCase({
125
- body: definition.body,
126
- definitionLocation: captureSourceLocation()(),
162
+ body: assertionBodyForActiveMacro(definition.body),
163
+ definitionLocations: definitionLocationsForAuthoringCall(),
127
164
  metadata: definition.metadata,
128
165
  title: definition.title
129
166
  });
@@ -131,8 +168,8 @@ export function test(...input) {
131
168
  if (input.length === positionalArgumentCount) {
132
169
  const [name, body] = input;
133
170
  return createTestCase({
134
- body: readBody(body),
135
- definitionLocation: captureSourceLocation()(),
171
+ body: assertionBodyForActiveMacro(readBody(body)),
172
+ definitionLocations: definitionLocationsForAuthoringCall(),
136
173
  metadata: createMicrotestMetadata({}),
137
174
  title: readTitle(name, testArgumentsError)
138
175
  });
@@ -144,7 +181,7 @@ export function suite(...input) {
144
181
  const definition = readSuiteDefinition(input[0]);
145
182
  return createSuite({
146
183
  children: definition.children,
147
- definitionLocation: captureSourceLocation()(),
184
+ definitionLocations: definitionLocationsForAuthoringCall(),
148
185
  metadata: definition.metadata,
149
186
  title: definition.title
150
187
  });
@@ -153,7 +190,7 @@ export function suite(...input) {
153
190
  const [name, children] = input;
154
191
  return createSuite({
155
192
  children: readChildren(children, suiteArgumentsError),
156
- definitionLocation: captureSourceLocation()(),
193
+ definitionLocations: definitionLocationsForAuthoringCall(),
157
194
  metadata: createMicrotestMetadata({}),
158
195
  title: readTitle(name, suiteArgumentsError)
159
196
  });
@@ -164,13 +201,47 @@ export function table(definition) {
164
201
  const tableDefinition = readTableDefinition(definition);
165
202
  return createTable({
166
203
  cases: tableCases(tableDefinition),
167
- definitionLocation: captureSourceLocation()(),
204
+ definitionLocations: definitionLocationsForAuthoringCall(),
168
205
  metadata: tableDefinition.metadata,
169
206
  title: tableDefinition.title
170
207
  });
171
208
  }
172
209
  export const createTestFacade = createUnavailableAuthoringApi('createTestFacade');
173
- export const defineMacro = createUnavailableAuthoringApi('defineMacro');
210
+ function createMacroNode(factory, parameters) {
211
+ const node = factory(...parameters);
212
+ if (!ownsTestNode(node)) {
213
+ throw new TypeError('defineMacro() factory must return a default-engine TestNode value.');
214
+ }
215
+ return node;
216
+ }
217
+ export function defineMacro(factory) {
218
+ if (typeof factory !== 'function') {
219
+ throw new TypeError('defineMacro() requires a factory function.');
220
+ }
221
+ return function runMacro(...parameters) {
222
+ const definitionLocations = definitionLocationsForAuthoringCall();
223
+ activeMacroDefinitionLocations.push(definitionLocations);
224
+ try {
225
+ return createMacroNode(factory, parameters);
226
+ }
227
+ finally {
228
+ activeMacroDefinitionLocations.pop();
229
+ }
230
+ };
231
+ }
232
+ export function defineParameterizedTestBody(body) {
233
+ if (typeof body !== 'function') {
234
+ throw new TypeError('defineParameterizedTestBody() requires a body function.');
235
+ }
236
+ return function createParameterizedTestBody(data) {
237
+ const sourceLocations = [captureAuthoringLocation()];
238
+ return async function runParameterizedTestBody(scope) {
239
+ return forwardAssertionSourceLocations(sourceLocations, async function runBody() {
240
+ return body(scope, data);
241
+ });
242
+ };
243
+ };
244
+ }
174
245
  export async function runIfMain(meta, testNode, options) {
175
246
  if (!meta.main) {
176
247
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"test.entry-point.js","sourceRoot":"","sources":["../../../../../source/packages/test/test.entry-point.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test.entry-point.js","sourceRoot":"","sources":["../../../../../source/packages/test/test.entry-point.ts"],"names":[],"mappings":"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"}
package/readme.md CHANGED
@@ -12,6 +12,16 @@ Current root runtime exports:
12
12
  - `suite`
13
13
  - `table`
14
14
  - `defineMacro`
15
+ - `defineParameterizedTestBody`
16
+ - `doubleUsage`
17
+ - `rule`
18
+ - `testDouble`
19
+ - `testIterator`
20
+ - `testAsyncIterator`
21
+ - `testIterable`
22
+ - `testAsyncIterable`
23
+ - `testDisposable`
24
+ - `testAsyncDisposable`
15
25
  - `createTestFacade`
16
26
  - `runIfMain`
17
27
 
@@ -31,11 +41,14 @@ Standard subpaths:
31
41
  Implemented root authoring forms:
32
42
 
33
43
  ```ts
34
- import { suite, table, test } from '@overkill-dev/test';
44
+ import { doubleUsage, suite, table, test, testDouble } from '@overkill-dev/test';
35
45
 
36
46
  export const testNode = suite('users', [
37
47
  test('loads user', (scope) => {
48
+ const loadUser = testDouble.returns({ id: '42', name: 'Ada' });
49
+
38
50
  scope.assert.equal(loadUser('42').name, 'Ada');
51
+ scope.assert(doubleUsage.calledOnceWith, loadUser, [ '42' ]);
39
52
  return scope.assert.collect();
40
53
  }),
41
54
  table({
@@ -52,6 +65,10 @@ export const testNode = suite('users', [
52
65
  ]);
53
66
  ```
54
67
 
68
+ The root doubles exports are the current lightweight public surface from
69
+ `@overkill-dev/doubles`. Import the leaf package directly when documenting or
70
+ testing doubles package ownership.
71
+
55
72
  Nodes created through this root facade default to `metadata.kind: 'microtest'`
56
73
  unless the object form supplies another `kind`.
57
74
 
@@ -79,7 +96,38 @@ body receives the original row value as `scope.parameters`; default row titles
79
96
  are `case 1`, `case 2`, and so on. Reachable tables must contain at least two
80
97
  rows.
81
98
 
82
- `defineMacro` and `createTestFacade` still throw explicit unavailable errors.
99
+ `defineMacro` preserves source locations for reusable test-node factories:
100
+
101
+ ```ts
102
+ const checkMissingName = defineMacro((title: string) =>
103
+ test(title, (scope) => {
104
+ scope.assert.equal(buildUser('').name, '', { message: 'missing name' });
105
+ return scope.assert.collect();
106
+ })
107
+ );
108
+
109
+ export const testNode = suite('users', [
110
+ checkMissingName('rejects missing user name')
111
+ ]);
112
+ ```
113
+
114
+ `defineParameterizedTestBody` captures the callsite where data is bound to a
115
+ test body:
116
+
117
+ ```ts
118
+ const checkName = defineParameterizedTestBody<{ readonly name: string; }>(
119
+ (scope, data) => {
120
+ scope.assert.equal(buildUser(data.name).name, data.name);
121
+ return scope.assert.collect();
122
+ }
123
+ );
124
+
125
+ export const testNode = suite('users', [
126
+ test('builds Ada', checkName({ name: 'Ada' }))
127
+ ]);
128
+ ```
129
+
130
+ `createTestFacade` still throws an explicit unavailable error.
83
131
 
84
132
  Direct Node execution:
85
133
 
package/sbom.cdx.json CHANGED
@@ -16,102 +16,115 @@
16
16
  "component": {
17
17
  "type": "library",
18
18
  "name": "@overkill-dev/test",
19
- "version": "0.0.9",
20
- "bom-ref": "pkg:npm/@overkill-dev/test@0.0.9",
21
- "purl": "pkg:npm/@overkill-dev/test@0.0.9"
19
+ "version": "0.0.10",
20
+ "bom-ref": "pkg:npm/@overkill-dev/test@0.0.10",
21
+ "purl": "pkg:npm/@overkill-dev/test@0.0.10"
22
22
  }
23
23
  },
24
24
  "components": [
25
25
  {
26
26
  "type": "library",
27
27
  "name": "@overkill-dev/assert",
28
- "version": "0.0.25",
29
- "bom-ref": "pkg:npm/@overkill-dev/assert@0.0.25",
28
+ "version": "0.0.26",
29
+ "bom-ref": "pkg:npm/@overkill-dev/assert@0.0.26",
30
30
  "scope": "required",
31
31
  "licenses": [
32
32
  {
33
33
  "expression": "MIT"
34
34
  }
35
35
  ],
36
- "purl": "pkg:npm/@overkill-dev/assert@0.0.25"
36
+ "purl": "pkg:npm/@overkill-dev/assert@0.0.26"
37
37
  },
38
38
  {
39
39
  "type": "library",
40
- "name": "@overkill-dev/engine",
40
+ "name": "@overkill-dev/doubles",
41
41
  "version": "0.0.24",
42
- "bom-ref": "pkg:npm/@overkill-dev/engine@0.0.24",
42
+ "bom-ref": "pkg:npm/@overkill-dev/doubles@0.0.24",
43
43
  "scope": "required",
44
44
  "licenses": [
45
45
  {
46
46
  "expression": "MIT"
47
47
  }
48
48
  ],
49
- "purl": "pkg:npm/@overkill-dev/engine@0.0.24"
49
+ "purl": "pkg:npm/@overkill-dev/doubles@0.0.24"
50
+ },
51
+ {
52
+ "type": "library",
53
+ "name": "@overkill-dev/engine",
54
+ "version": "0.0.25",
55
+ "bom-ref": "pkg:npm/@overkill-dev/engine@0.0.25",
56
+ "scope": "required",
57
+ "licenses": [
58
+ {
59
+ "expression": "MIT"
60
+ }
61
+ ],
62
+ "purl": "pkg:npm/@overkill-dev/engine@0.0.25"
50
63
  },
51
64
  {
52
65
  "type": "library",
53
66
  "name": "@overkill-dev/output-renderer-github-actions",
54
- "version": "0.0.14",
55
- "bom-ref": "pkg:npm/@overkill-dev/output-renderer-github-actions@0.0.14",
67
+ "version": "0.0.15",
68
+ "bom-ref": "pkg:npm/@overkill-dev/output-renderer-github-actions@0.0.15",
56
69
  "scope": "required",
57
70
  "licenses": [
58
71
  {
59
72
  "expression": "MIT"
60
73
  }
61
74
  ],
62
- "purl": "pkg:npm/@overkill-dev/output-renderer-github-actions@0.0.14"
75
+ "purl": "pkg:npm/@overkill-dev/output-renderer-github-actions@0.0.15"
63
76
  },
64
77
  {
65
78
  "type": "library",
66
79
  "name": "@overkill-dev/reporter-brief",
67
- "version": "0.0.14",
68
- "bom-ref": "pkg:npm/@overkill-dev/reporter-brief@0.0.14",
80
+ "version": "0.0.15",
81
+ "bom-ref": "pkg:npm/@overkill-dev/reporter-brief@0.0.15",
69
82
  "scope": "required",
70
83
  "licenses": [
71
84
  {
72
85
  "expression": "MIT"
73
86
  }
74
87
  ],
75
- "purl": "pkg:npm/@overkill-dev/reporter-brief@0.0.14"
88
+ "purl": "pkg:npm/@overkill-dev/reporter-brief@0.0.15"
76
89
  },
77
90
  {
78
91
  "type": "library",
79
92
  "name": "@overkill-dev/reporter-dot",
80
- "version": "0.0.25",
81
- "bom-ref": "pkg:npm/@overkill-dev/reporter-dot@0.0.25",
93
+ "version": "0.0.26",
94
+ "bom-ref": "pkg:npm/@overkill-dev/reporter-dot@0.0.26",
82
95
  "scope": "required",
83
96
  "licenses": [
84
97
  {
85
98
  "expression": "MIT"
86
99
  }
87
100
  ],
88
- "purl": "pkg:npm/@overkill-dev/reporter-dot@0.0.25"
101
+ "purl": "pkg:npm/@overkill-dev/reporter-dot@0.0.26"
89
102
  },
90
103
  {
91
104
  "type": "library",
92
105
  "name": "@overkill-dev/reporter-line",
93
- "version": "0.0.25",
94
- "bom-ref": "pkg:npm/@overkill-dev/reporter-line@0.0.25",
106
+ "version": "0.0.26",
107
+ "bom-ref": "pkg:npm/@overkill-dev/reporter-line@0.0.26",
95
108
  "scope": "required",
96
109
  "licenses": [
97
110
  {
98
111
  "expression": "MIT"
99
112
  }
100
113
  ],
101
- "purl": "pkg:npm/@overkill-dev/reporter-line@0.0.25"
114
+ "purl": "pkg:npm/@overkill-dev/reporter-line@0.0.26"
102
115
  },
103
116
  {
104
117
  "type": "library",
105
118
  "name": "@overkill-dev/run",
106
- "version": "0.0.29",
107
- "bom-ref": "pkg:npm/@overkill-dev/run@0.0.29",
119
+ "version": "0.0.30",
120
+ "bom-ref": "pkg:npm/@overkill-dev/run@0.0.30",
108
121
  "scope": "required",
109
122
  "licenses": [
110
123
  {
111
124
  "expression": "MIT"
112
125
  }
113
126
  ],
114
- "purl": "pkg:npm/@overkill-dev/run@0.0.29"
127
+ "purl": "pkg:npm/@overkill-dev/run@0.0.30"
115
128
  },
116
129
  {
117
130
  "type": "library",
@@ -129,36 +142,40 @@
129
142
  ],
130
143
  "dependencies": [
131
144
  {
132
- "ref": "pkg:npm/@overkill-dev/assert@0.0.25"
145
+ "ref": "pkg:npm/@overkill-dev/assert@0.0.26"
146
+ },
147
+ {
148
+ "ref": "pkg:npm/@overkill-dev/doubles@0.0.24"
133
149
  },
134
150
  {
135
- "ref": "pkg:npm/@overkill-dev/engine@0.0.24"
151
+ "ref": "pkg:npm/@overkill-dev/engine@0.0.25"
136
152
  },
137
153
  {
138
- "ref": "pkg:npm/@overkill-dev/output-renderer-github-actions@0.0.14"
154
+ "ref": "pkg:npm/@overkill-dev/output-renderer-github-actions@0.0.15"
139
155
  },
140
156
  {
141
- "ref": "pkg:npm/@overkill-dev/reporter-brief@0.0.14"
157
+ "ref": "pkg:npm/@overkill-dev/reporter-brief@0.0.15"
142
158
  },
143
159
  {
144
- "ref": "pkg:npm/@overkill-dev/reporter-dot@0.0.25"
160
+ "ref": "pkg:npm/@overkill-dev/reporter-dot@0.0.26"
145
161
  },
146
162
  {
147
- "ref": "pkg:npm/@overkill-dev/reporter-line@0.0.25"
163
+ "ref": "pkg:npm/@overkill-dev/reporter-line@0.0.26"
148
164
  },
149
165
  {
150
- "ref": "pkg:npm/@overkill-dev/run@0.0.29"
166
+ "ref": "pkg:npm/@overkill-dev/run@0.0.30"
151
167
  },
152
168
  {
153
- "ref": "pkg:npm/@overkill-dev/test@0.0.9",
169
+ "ref": "pkg:npm/@overkill-dev/test@0.0.10",
154
170
  "dependsOn": [
155
- "pkg:npm/@overkill-dev/assert@0.0.25",
156
- "pkg:npm/@overkill-dev/engine@0.0.24",
157
- "pkg:npm/@overkill-dev/output-renderer-github-actions@0.0.14",
158
- "pkg:npm/@overkill-dev/reporter-brief@0.0.14",
159
- "pkg:npm/@overkill-dev/reporter-dot@0.0.25",
160
- "pkg:npm/@overkill-dev/reporter-line@0.0.25",
161
- "pkg:npm/@overkill-dev/run@0.0.29",
171
+ "pkg:npm/@overkill-dev/assert@0.0.26",
172
+ "pkg:npm/@overkill-dev/doubles@0.0.24",
173
+ "pkg:npm/@overkill-dev/engine@0.0.25",
174
+ "pkg:npm/@overkill-dev/output-renderer-github-actions@0.0.15",
175
+ "pkg:npm/@overkill-dev/reporter-brief@0.0.15",
176
+ "pkg:npm/@overkill-dev/reporter-dot@0.0.26",
177
+ "pkg:npm/@overkill-dev/reporter-line@0.0.26",
178
+ "pkg:npm/@overkill-dev/run@0.0.30",
162
179
  "pkg:npm/cmd-ts@0.15.0"
163
180
  ]
164
181
  },