@c9up/helix 0.1.7 → 0.1.9
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/README.md +282 -11
- package/bin/helix.js +329 -13
- package/dist/cli/failed-cache.d.ts +27 -0
- package/dist/cli/failed-cache.d.ts.map +1 -0
- package/dist/cli/failed-cache.js +64 -0
- package/dist/cli/failed-cache.js.map +1 -0
- package/dist/cli/glob.d.ts +36 -0
- package/dist/cli/glob.d.ts.map +1 -0
- package/dist/cli/glob.js +185 -0
- package/dist/cli/glob.js.map +1 -0
- package/dist/cli/native.d.ts +4 -0
- package/dist/cli/native.d.ts.map +1 -1
- package/dist/cli/native.js.map +1 -1
- package/dist/cli/pool.d.ts +11 -0
- package/dist/cli/pool.d.ts.map +1 -1
- package/dist/cli/pool.js +12 -0
- package/dist/cli/pool.js.map +1 -1
- package/dist/cli/reporter.d.ts +11 -0
- package/dist/cli/reporter.d.ts.map +1 -1
- package/dist/cli/reporter.js +53 -0
- package/dist/cli/reporter.js.map +1 -1
- package/dist/cli/run.d.ts +41 -0
- package/dist/cli/run.d.ts.map +1 -1
- package/dist/cli/run.js +181 -21
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/runner.d.ts +19 -0
- package/dist/cli/runner.d.ts.map +1 -0
- package/dist/cli/runner.js +15 -0
- package/dist/cli/runner.js.map +1 -0
- package/dist/cli/suites.d.ts +102 -0
- package/dist/cli/suites.d.ts.map +1 -0
- package/dist/cli/suites.js +226 -0
- package/dist/cli/suites.js.map +1 -0
- package/dist/index.d.ts +10 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -8
- package/dist/index.js.map +1 -1
- package/dist/japa/core.d.ts +106 -0
- package/dist/japa/core.d.ts.map +1 -0
- package/dist/japa/core.js +128 -0
- package/dist/japa/core.js.map +1 -0
- package/dist/runtime/assert.d.ts +174 -0
- package/dist/runtime/assert.d.ts.map +1 -0
- package/dist/runtime/assert.js +591 -0
- package/dist/runtime/assert.js.map +1 -0
- package/dist/runtime/asymmetric.d.ts +34 -0
- package/dist/runtime/asymmetric.d.ts.map +1 -0
- package/dist/runtime/asymmetric.js +78 -0
- package/dist/runtime/asymmetric.js.map +1 -0
- package/dist/runtime/bootstrap.d.ts +47 -0
- package/dist/runtime/bootstrap.d.ts.map +1 -0
- package/dist/runtime/bootstrap.js +166 -0
- package/dist/runtime/bootstrap.js.map +1 -0
- package/dist/runtime/cli-args.d.ts +77 -0
- package/dist/runtime/cli-args.d.ts.map +1 -0
- package/dist/runtime/cli-args.js +85 -0
- package/dist/runtime/cli-args.js.map +1 -0
- package/dist/runtime/configure.d.ts +214 -0
- package/dist/runtime/configure.d.ts.map +1 -0
- package/dist/runtime/configure.js +164 -0
- package/dist/runtime/configure.js.map +1 -0
- package/dist/runtime/context.d.ts +84 -0
- package/dist/runtime/context.d.ts.map +1 -0
- package/dist/runtime/context.js +146 -0
- package/dist/runtime/context.js.map +1 -0
- package/dist/runtime/emitter.d.ts +141 -0
- package/dist/runtime/emitter.d.ts.map +1 -0
- package/dist/runtime/emitter.js +79 -0
- package/dist/runtime/emitter.js.map +1 -0
- package/dist/runtime/equals.d.ts.map +1 -1
- package/dist/runtime/equals.js +21 -0
- package/dist/runtime/equals.js.map +1 -1
- package/dist/runtime/expect.d.ts +22 -1
- package/dist/runtime/expect.d.ts.map +1 -1
- package/dist/runtime/expect.js +15 -1
- package/dist/runtime/expect.js.map +1 -1
- package/dist/runtime/global-hooks.d.ts +31 -0
- package/dist/runtime/global-hooks.d.ts.map +1 -0
- package/dist/runtime/global-hooks.js +126 -0
- package/dist/runtime/global-hooks.js.map +1 -0
- package/dist/runtime/index.d.ts +16 -3
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +7 -1
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/matchers.d.ts +5 -0
- package/dist/runtime/matchers.d.ts.map +1 -1
- package/dist/runtime/matchers.js +117 -0
- package/dist/runtime/matchers.js.map +1 -1
- package/dist/runtime/run.d.ts +63 -1
- package/dist/runtime/run.d.ts.map +1 -1
- package/dist/runtime/run.js +696 -79
- package/dist/runtime/run.js.map +1 -1
- package/dist/runtime/runner.d.ts +97 -0
- package/dist/runtime/runner.d.ts.map +1 -0
- package/dist/runtime/runner.js +160 -0
- package/dist/runtime/runner.js.map +1 -0
- package/dist/runtime/suite-config.d.ts +23 -0
- package/dist/runtime/suite-config.d.ts.map +1 -0
- package/dist/runtime/suite-config.js +52 -0
- package/dist/runtime/suite-config.js.map +1 -0
- package/dist/runtime/suite-taps.d.ts +122 -0
- package/dist/runtime/suite-taps.d.ts.map +1 -0
- package/dist/runtime/suite-taps.js +218 -0
- package/dist/runtime/suite-taps.js.map +1 -0
- package/dist/runtime/suite.d.ts +316 -10
- package/dist/runtime/suite.d.ts.map +1 -1
- package/dist/runtime/suite.js +307 -8
- package/dist/runtime/suite.js.map +1 -1
- package/dist/runtime/test-context.d.ts +88 -1
- package/dist/runtime/test-context.d.ts.map +1 -1
- package/dist/runtime/test-context.js +170 -2
- package/dist/runtime/test-context.js.map +1 -1
- package/dist/runtime/vi/fake-timers.d.ts.map +1 -1
- package/dist/runtime/vi/fake-timers.js +3 -4
- package/dist/runtime/vi/fake-timers.js.map +1 -1
- package/dist/runtime/worker.d.ts.map +1 -1
- package/dist/runtime/worker.js +87 -5
- package/dist/runtime/worker.js.map +1 -1
- package/index.darwin-arm64.node +0 -0
- package/index.darwin-x64.node +0 -0
- package/index.linux-arm64-gnu.node +0 -0
- package/index.linux-x64-gnu.node +0 -0
- package/index.win32-x64-msvc.node +0 -0
- package/package.json +10 -1
package/dist/runtime/suite.js
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* invocations never share state.
|
|
8
8
|
*/
|
|
9
9
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
10
|
+
import { getFrameTest } from "./test-context.js";
|
|
10
11
|
function makeSuite(name, mode, parent) {
|
|
11
12
|
return {
|
|
12
13
|
kind: "suite",
|
|
@@ -65,15 +66,177 @@ function current() {
|
|
|
65
66
|
throw new Error("internal: suite stack empty");
|
|
66
67
|
return top;
|
|
67
68
|
}
|
|
68
|
-
function registerTest(name, mode, fn) {
|
|
69
|
+
function registerTest(name, mode, fn, options) {
|
|
69
70
|
const parent = current();
|
|
70
|
-
|
|
71
|
+
const node = {
|
|
71
72
|
kind: "test",
|
|
72
73
|
name,
|
|
73
74
|
fn,
|
|
74
75
|
mode,
|
|
75
76
|
parent,
|
|
76
|
-
|
|
77
|
+
retries: options?.retry,
|
|
78
|
+
timeoutMs: options?.timeout,
|
|
79
|
+
tags: options?.tags,
|
|
80
|
+
failing: options?.fails,
|
|
81
|
+
};
|
|
82
|
+
parent.children.push(node);
|
|
83
|
+
return node;
|
|
84
|
+
}
|
|
85
|
+
/** Consumer-registered handle macros (Japa `Test.macro`) applied to every handle. */
|
|
86
|
+
const handleMacros = new Map();
|
|
87
|
+
/** Wrap a registered node in the chainable Japa-style handle. */
|
|
88
|
+
function makeHandle(node) {
|
|
89
|
+
const handle = {
|
|
90
|
+
retry(n) {
|
|
91
|
+
node.retries = n;
|
|
92
|
+
return handle;
|
|
93
|
+
},
|
|
94
|
+
timeout(ms) {
|
|
95
|
+
node.timeoutMs = ms;
|
|
96
|
+
return handle;
|
|
97
|
+
},
|
|
98
|
+
disableTimeout() {
|
|
99
|
+
node.timeoutMs = 0;
|
|
100
|
+
return handle;
|
|
101
|
+
},
|
|
102
|
+
tags(tags, strategy = "replace") {
|
|
103
|
+
const incoming = Array.isArray(tags) ? tags : [tags];
|
|
104
|
+
const existing = node.tags ?? [];
|
|
105
|
+
node.tags =
|
|
106
|
+
strategy === "append"
|
|
107
|
+
? [...existing, ...incoming]
|
|
108
|
+
: strategy === "prepend"
|
|
109
|
+
? [...incoming, ...existing]
|
|
110
|
+
: [...incoming];
|
|
111
|
+
return handle;
|
|
112
|
+
},
|
|
113
|
+
fails(reason) {
|
|
114
|
+
node.failing = true;
|
|
115
|
+
if (reason !== undefined)
|
|
116
|
+
node.reason = reason;
|
|
117
|
+
return handle;
|
|
118
|
+
},
|
|
119
|
+
setup(fn) {
|
|
120
|
+
if (!node.setups)
|
|
121
|
+
node.setups = [];
|
|
122
|
+
node.setups.push(fn);
|
|
123
|
+
return handle;
|
|
124
|
+
},
|
|
125
|
+
teardown(fn) {
|
|
126
|
+
if (!node.teardowns)
|
|
127
|
+
node.teardowns = [];
|
|
128
|
+
node.teardowns.push(fn);
|
|
129
|
+
return handle;
|
|
130
|
+
},
|
|
131
|
+
pin() {
|
|
132
|
+
node.pinned = true;
|
|
133
|
+
// A pinned test runs like `.only` — the runner already restricts the
|
|
134
|
+
// tree to `only` nodes when any exist.
|
|
135
|
+
if (node.mode === "run")
|
|
136
|
+
node.mode = "only";
|
|
137
|
+
return handle;
|
|
138
|
+
},
|
|
139
|
+
skip(condition = true, reason) {
|
|
140
|
+
if (typeof condition === "function") {
|
|
141
|
+
// Deferred: a function condition (possibly async) is evaluated at RUN
|
|
142
|
+
// time (Japa parity), not eagerly at collection.
|
|
143
|
+
node.skipCondition = condition;
|
|
144
|
+
if (reason !== undefined)
|
|
145
|
+
node.reason = reason;
|
|
146
|
+
}
|
|
147
|
+
else if (condition) {
|
|
148
|
+
node.mode = "skip";
|
|
149
|
+
if (reason !== undefined)
|
|
150
|
+
node.reason = reason;
|
|
151
|
+
}
|
|
152
|
+
return handle;
|
|
153
|
+
},
|
|
154
|
+
waitForDone() {
|
|
155
|
+
node.waitForDone = true;
|
|
156
|
+
return handle;
|
|
157
|
+
},
|
|
158
|
+
with(rows) {
|
|
159
|
+
// Covariant: DatasetSource<Row> assigns to DatasetSource<unknown> (no cast).
|
|
160
|
+
node.datasetFn = rows;
|
|
161
|
+
// If `test(name, fn)` already supplied a body, it IS the dataset body —
|
|
162
|
+
// re-home it so the executor calls it with `(ctx, row)`. `datasetBody`'s
|
|
163
|
+
// bivariant method signature accepts `node.fn` directly (no cast). A body
|
|
164
|
+
// added later via `.run()` overrides this.
|
|
165
|
+
if (node.datasetBody === undefined && node.fn) {
|
|
166
|
+
node.datasetBody = node.fn;
|
|
167
|
+
}
|
|
168
|
+
// A `test('title')` with no body was registered as `todo`; attaching a
|
|
169
|
+
// dataset makes it a runnable, per-row test again.
|
|
170
|
+
if (node.mode === "todo")
|
|
171
|
+
node.mode = "run";
|
|
172
|
+
node.fn = undefined;
|
|
173
|
+
const datasetHandle = {
|
|
174
|
+
run(fn) {
|
|
175
|
+
// Bivariant method param → the Row-typed body assigns without a cast.
|
|
176
|
+
node.datasetBody = fn;
|
|
177
|
+
if (node.mode === "todo")
|
|
178
|
+
node.mode = "run";
|
|
179
|
+
node.fn = undefined;
|
|
180
|
+
return handle;
|
|
181
|
+
},
|
|
182
|
+
};
|
|
183
|
+
return datasetHandle;
|
|
184
|
+
},
|
|
185
|
+
};
|
|
186
|
+
// Apply consumer-registered macros (Japa `Test.macro`) — `this` is the handle
|
|
187
|
+
// so the macro can chain.
|
|
188
|
+
for (const [name, fn] of handleMacros) {
|
|
189
|
+
Object.defineProperty(handle, name, {
|
|
190
|
+
value: (...args) => fn.apply(handle, args),
|
|
191
|
+
enumerable: false,
|
|
192
|
+
configurable: true,
|
|
193
|
+
writable: true,
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
return handle;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Build the {@link TapHandle} passed to `group.tap` — the chainable modifiers
|
|
200
|
+
* plus a mutable `options` view backed live by the node (Japa `test.options`).
|
|
201
|
+
*/
|
|
202
|
+
function makeTapHandle(node) {
|
|
203
|
+
const handle = makeHandle(node);
|
|
204
|
+
const options = {
|
|
205
|
+
get title() {
|
|
206
|
+
return node.name;
|
|
207
|
+
},
|
|
208
|
+
set title(v) {
|
|
209
|
+
node.name = v;
|
|
210
|
+
},
|
|
211
|
+
get tags() {
|
|
212
|
+
return node.tags ?? [];
|
|
213
|
+
},
|
|
214
|
+
set tags(v) {
|
|
215
|
+
node.tags = v;
|
|
216
|
+
},
|
|
217
|
+
get timeout() {
|
|
218
|
+
return node.timeoutMs;
|
|
219
|
+
},
|
|
220
|
+
set timeout(v) {
|
|
221
|
+
node.timeoutMs = v;
|
|
222
|
+
},
|
|
223
|
+
get retries() {
|
|
224
|
+
return node.retries;
|
|
225
|
+
},
|
|
226
|
+
set retries(v) {
|
|
227
|
+
node.retries = v;
|
|
228
|
+
},
|
|
229
|
+
};
|
|
230
|
+
return Object.assign(handle, { options });
|
|
231
|
+
}
|
|
232
|
+
/** Normalise the optional 3rd arg: a bare number is a timeout (Vitest). */
|
|
233
|
+
function normaliseTestOptions(optionsOrTimeout) {
|
|
234
|
+
if (optionsOrTimeout === undefined)
|
|
235
|
+
return undefined;
|
|
236
|
+
if (typeof optionsOrTimeout === "number") {
|
|
237
|
+
return { timeout: optionsOrTimeout };
|
|
238
|
+
}
|
|
239
|
+
return optionsOrTimeout;
|
|
77
240
|
}
|
|
78
241
|
function registerSuite(name, mode, body) {
|
|
79
242
|
const ctx = currentContext();
|
|
@@ -177,22 +340,158 @@ function interpolateEach(template, row, index) {
|
|
|
177
340
|
// Append index so names don't collide.
|
|
178
341
|
return `${template} [${index}]`;
|
|
179
342
|
}
|
|
343
|
+
/**
|
|
344
|
+
* Interpolate a dataset test title (Japa parity). Tokens:
|
|
345
|
+
* - `{$i}` → the 1-based row index
|
|
346
|
+
* - `{$self}`→ the row itself (stringified) — for primitive/array rows
|
|
347
|
+
* - `{prop}` / `{a.b}` → a (dotted) property lookup on an object row
|
|
348
|
+
* Unknown `{tokens}` are left verbatim. A template with no token at all is
|
|
349
|
+
* returned unchanged and therefore repeats for every row — Japa's behaviour,
|
|
350
|
+
* and what the golden dataset spec pins down.
|
|
351
|
+
*/
|
|
352
|
+
export function interpolateDatasetTitle(template, row, index) {
|
|
353
|
+
// No token: Japa returns the title unchanged and repeats it for every row.
|
|
354
|
+
// helix used to append ` (row N)` to keep them distinct; that made titles a
|
|
355
|
+
// reporter shows — and `--tests` never matched on, since filtering reads the
|
|
356
|
+
// declared name — differ from Japa's for the same spec.
|
|
357
|
+
if (!/\{[^}]+\}/.test(template))
|
|
358
|
+
return template;
|
|
359
|
+
return template.replace(/\{([^}]+)\}/g, (match, tokenRaw) => {
|
|
360
|
+
const token = tokenRaw.trim();
|
|
361
|
+
if (token === "$i")
|
|
362
|
+
return String(index + 1);
|
|
363
|
+
if (token === "$self") {
|
|
364
|
+
return typeof row === "object" && row !== null
|
|
365
|
+
? safeStringify(row)
|
|
366
|
+
: String(row);
|
|
367
|
+
}
|
|
368
|
+
// Dotted property path against an object row.
|
|
369
|
+
let cursor = row;
|
|
370
|
+
for (const part of token.split(".")) {
|
|
371
|
+
if (cursor && typeof cursor === "object" && part in cursor) {
|
|
372
|
+
cursor = Reflect.get(cursor, part);
|
|
373
|
+
}
|
|
374
|
+
else {
|
|
375
|
+
return match; // leave unknown tokens verbatim
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
if (typeof cursor === "object" && cursor !== null)
|
|
379
|
+
return safeStringify(cursor);
|
|
380
|
+
return String(cursor);
|
|
381
|
+
});
|
|
382
|
+
}
|
|
180
383
|
const describeFn = ((name, fn) => registerSuite(name, "run", fn));
|
|
181
384
|
describeFn.skip = (name, fn) => registerSuite(name, "skip", fn);
|
|
182
385
|
describeFn.only = (name, fn) => registerSuite(name, "only", fn);
|
|
183
386
|
describeFn.todo = (name) => registerSuite(name, "todo", () => { });
|
|
184
|
-
const testFn = ((name, fn) =>
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
387
|
+
const testFn = ((name, fn, options) => {
|
|
388
|
+
// No body → `todo` (Japa parity). A dataset body added later via
|
|
389
|
+
// `.with(...).run(fn)` promotes it back to a runnable test.
|
|
390
|
+
const mode = fn === undefined ? "todo" : "run";
|
|
391
|
+
return makeHandle(registerTest(name, mode, fn, normaliseTestOptions(options)));
|
|
392
|
+
});
|
|
393
|
+
testFn.skip = (name, fn) => {
|
|
394
|
+
registerTest(name, "skip", fn);
|
|
395
|
+
};
|
|
396
|
+
testFn.only = (name, fn, options) => makeHandle(registerTest(name, "only", fn, normaliseTestOptions(options)));
|
|
397
|
+
testFn.todo = (name) => {
|
|
398
|
+
registerTest(name, "todo", undefined);
|
|
399
|
+
};
|
|
188
400
|
testFn.each = (rows) => {
|
|
189
401
|
return (name, fn) => {
|
|
190
|
-
|
|
402
|
+
// A function source (`test.each(() => rows)`) is resolved eagerly at
|
|
403
|
+
// collection time — per-row nodes need concrete rows to register.
|
|
404
|
+
const resolved = typeof rows === "function" ? rows() : rows;
|
|
405
|
+
resolved.forEach((row, index) => {
|
|
191
406
|
const resolvedName = interpolateEach(name, row, index);
|
|
192
407
|
registerTest(resolvedName, "run", () => fn(row));
|
|
193
408
|
});
|
|
194
409
|
};
|
|
195
410
|
};
|
|
411
|
+
testFn.group = (name, fn) => {
|
|
412
|
+
// Japa forbids nested groups (grouping-tests docs) — a group inside a group
|
|
413
|
+
// is a structural error, not a supported nesting.
|
|
414
|
+
for (let ancestor = current(); ancestor !== undefined; ancestor = ancestor.parent) {
|
|
415
|
+
if (ancestor.isGroup) {
|
|
416
|
+
throw new Error(`test.group("${name}") cannot be nested inside group "${ancestor.name}" — Japa does not allow nested groups.`);
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
// A group IS a suite. Build ONE instance that is the body handle, the value
|
|
420
|
+
// returned, AND the `self` the group's hooks receive (Japa `self === group`).
|
|
421
|
+
// Its hook methods attach to THIS active suite via `addHook`.
|
|
422
|
+
let instance;
|
|
423
|
+
registerSuite(name, "run", () => {
|
|
424
|
+
const suite = current();
|
|
425
|
+
suite.isGroup = true;
|
|
426
|
+
// Dotted full name from the suite chain (matching the runtime `joinName`
|
|
427
|
+
// separator); computed HERE where `suite` is the group's own node.
|
|
428
|
+
const ancestorNames = [];
|
|
429
|
+
for (let a = suite; a !== undefined; a = a.parent) {
|
|
430
|
+
if (a.name)
|
|
431
|
+
ancestorNames.unshift(a.name);
|
|
432
|
+
}
|
|
433
|
+
const taps = [];
|
|
434
|
+
const group = {
|
|
435
|
+
title: name,
|
|
436
|
+
fullName: ancestorNames.join(" > "),
|
|
437
|
+
setup: (hookFn) => addHook("beforeAll", hookFn),
|
|
438
|
+
teardown: (hookFn) => addHook("afterAll", hookFn),
|
|
439
|
+
each: {
|
|
440
|
+
setup: (hookFn) => addHook("beforeEach", hookFn),
|
|
441
|
+
teardown: (hookFn) => addHook("afterEach", hookFn),
|
|
442
|
+
timeout: (ms) => {
|
|
443
|
+
suite.eachTimeout = ms;
|
|
444
|
+
},
|
|
445
|
+
disableTimeout: () => {
|
|
446
|
+
suite.eachTimeout = 0;
|
|
447
|
+
},
|
|
448
|
+
retry: (n) => {
|
|
449
|
+
suite.eachRetries = n;
|
|
450
|
+
},
|
|
451
|
+
},
|
|
452
|
+
tap: (tapFn) => taps.push(tapFn),
|
|
453
|
+
};
|
|
454
|
+
suite.groupInstance = group;
|
|
455
|
+
instance = group;
|
|
456
|
+
fn(group);
|
|
457
|
+
// Apply `tap` callbacks to every test registered directly in this group,
|
|
458
|
+
// regardless of whether tap() was called before or after them.
|
|
459
|
+
if (taps.length > 0) {
|
|
460
|
+
for (const child of suite.children) {
|
|
461
|
+
if (child.kind === "test") {
|
|
462
|
+
const handle = makeTapHandle(child);
|
|
463
|
+
for (const tapFn of taps)
|
|
464
|
+
tapFn(handle);
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
});
|
|
469
|
+
// `registerSuite` ran the body synchronously, so `instance` is set.
|
|
470
|
+
if (instance === undefined) {
|
|
471
|
+
throw new Error(`internal: group("${name}") instance was not built`);
|
|
472
|
+
}
|
|
473
|
+
return instance;
|
|
474
|
+
};
|
|
475
|
+
testFn.macro = (callback) => {
|
|
476
|
+
return (...args) => {
|
|
477
|
+
const t = getFrameTest();
|
|
478
|
+
if (t === undefined) {
|
|
479
|
+
throw new Error("test.macro(...): the returned function must be invoked inside a running test.");
|
|
480
|
+
}
|
|
481
|
+
return callback(t, ...args);
|
|
482
|
+
};
|
|
483
|
+
};
|
|
484
|
+
/**
|
|
485
|
+
* Class-level extension surface (Japa `Test.macro`). Registers a named method
|
|
486
|
+
* available on every test handle; `this` inside it is the handle, so it can
|
|
487
|
+
* chain (`Test.macro('slow', function () { this.tags(['@slow']); return this })`).
|
|
488
|
+
* Pair with a `declare module` augmentation for the types.
|
|
489
|
+
*/
|
|
490
|
+
export const Test = {
|
|
491
|
+
macro(name, fn) {
|
|
492
|
+
handleMacros.set(name, fn);
|
|
493
|
+
},
|
|
494
|
+
};
|
|
196
495
|
export const describe = describeFn;
|
|
197
496
|
export const test = testFn;
|
|
198
497
|
export const it = testFn;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"suite.js","sourceRoot":"","sources":["../../src/runtime/suite.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"suite.js","sourceRoot":"","sources":["../../src/runtime/suite.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,YAAY,EAAoB,MAAM,mBAAmB,CAAC;AAiQnE,SAAS,SAAS,CACjB,IAAY,EACZ,IAAa,EACb,MAA6B;IAE7B,OAAO;QACN,IAAI,EAAE,OAAO;QACb,IAAI;QACJ,IAAI;QACJ,MAAM;QACN,QAAQ,EAAE,EAAE;QACZ,KAAK,EAAE,EAAE;KACT,CAAC;AACH,CAAC;AA0BD,SAAS,QAAQ;IAChB,IAAI,CAAC,GAAG,UAAU,CAAC,yBAAyB,CAAC;IAC7C,IAAI,CAAC,CAAC,EAAE,CAAC;QACR,MAAM,IAAI,GAAG,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QAC7C,CAAC,GAAG;YACH,OAAO,EAAE,IAAI,iBAAiB,EAAqB;YACnD,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,CAAC,IAAI,CAAC;SACrB,CAAC;QACF,UAAU,CAAC,yBAAyB,GAAG,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,CAAC,CAAC;AACV,CAAC;AAED,SAAS,cAAc;IACtB,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC;IACrB,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IACpC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,SAAS;IACxB,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC;IACrB,CAAC,CAAC,YAAY,GAAG,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IACjD,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IACnC,OAAO,CAAC,CAAC,YAAY,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,OAAO;IACtB,OAAO,cAAc,EAAE,CAAC,IAAI,CAAC;AAC9B,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CACnC,IAAgC;IAEhC,MAAM,IAAI,GAAG,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAsB,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;IACvD,MAAM,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,IAAI,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACb,CAAC;AAED,SAAS,OAAO;IACf,MAAM,EAAE,KAAK,EAAE,GAAG,cAAc,EAAE,CAAC;IACnC,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACpC,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACzD,OAAO,GAAG,CAAC;AACZ,CAAC;AAED,SAAS,YAAY,CACpB,IAAY,EACZ,IAAa,EACb,EAAsB,EACtB,OAAqB;IAErB,MAAM,MAAM,GAAG,OAAO,EAAE,CAAC;IACzB,MAAM,IAAI,GAAa;QACtB,IAAI,EAAE,MAAM;QACZ,IAAI;QACJ,EAAE;QACF,IAAI;QACJ,MAAM;QACN,OAAO,EAAE,OAAO,EAAE,KAAK;QACvB,SAAS,EAAE,OAAO,EAAE,OAAO;QAC3B,IAAI,EAAE,OAAO,EAAE,IAAI;QACnB,OAAO,EAAE,OAAO,EAAE,KAAK;KACvB,CAAC;IACF,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,OAAO,IAAI,CAAC;AACb,CAAC;AAED,qFAAqF;AACrF,MAAM,YAAY,GAAG,IAAI,GAAG,EAGzB,CAAC;AAEJ,iEAAiE;AACjE,SAAS,UAAU,CAAC,IAAc;IACjC,MAAM,MAAM,GAAe;QAC1B,KAAK,CAAC,CAAS;YACd,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;YACjB,OAAO,MAAM,CAAC;QACf,CAAC;QACD,OAAO,CAAC,EAAU;YACjB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;YACpB,OAAO,MAAM,CAAC;QACf,CAAC;QACD,cAAc;YACb,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;YACnB,OAAO,MAAM,CAAC;QACf,CAAC;QACD,IAAI,CAAC,IAAuB,EAAE,WAAwB,SAAS;YAC9D,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;YACjC,IAAI,CAAC,IAAI;gBACR,QAAQ,KAAK,QAAQ;oBACpB,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,GAAG,QAAQ,CAAC;oBAC5B,CAAC,CAAC,QAAQ,KAAK,SAAS;wBACvB,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,GAAG,QAAQ,CAAC;wBAC5B,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;YACnB,OAAO,MAAM,CAAC;QACf,CAAC;QACD,KAAK,CAAC,MAAe;YACpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,MAAM,KAAK,SAAS;gBAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YAC/C,OAAO,MAAM,CAAC;QACf,CAAC;QACD,KAAK,CAAC,EAAU;YACf,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACrB,OAAO,MAAM,CAAC;QACf,CAAC;QACD,QAAQ,CAAC,EAAU;YAClB,IAAI,CAAC,IAAI,CAAC,SAAS;gBAAE,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;YACzC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxB,OAAO,MAAM,CAAC;QACf,CAAC;QACD,GAAG;YACF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,qEAAqE;YACrE,uCAAuC;YACvC,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;gBAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;YAC5C,OAAO,MAAM,CAAC;QACf,CAAC;QACD,IAAI,CACH,YAA0D,IAAI,EAC9D,MAAe;YAEf,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE,CAAC;gBACrC,sEAAsE;gBACtE,iDAAiD;gBACjD,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;gBAC/B,IAAI,MAAM,KAAK,SAAS;oBAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YAChD,CAAC;iBAAM,IAAI,SAAS,EAAE,CAAC;gBACtB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;gBACnB,IAAI,MAAM,KAAK,SAAS;oBAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YAChD,CAAC;YACD,OAAO,MAAM,CAAC;QACf,CAAC;QACD,WAAW;YACV,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,OAAO,MAAM,CAAC;QACf,CAAC;QACD,IAAI,CAAM,IAAwB;YACjC,6EAA6E;YAC7E,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,wEAAwE;YACxE,yEAAyE;YACzE,0EAA0E;YAC1E,2CAA2C;YAC3C,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;gBAC/C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC;YAC5B,CAAC;YACD,uEAAuE;YACvE,mDAAmD;YACnD,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;gBAAE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;YAC5C,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC;YACpB,MAAM,aAAa,GAAuB;gBACzC,GAAG,CAAC,EAAE;oBACL,sEAAsE;oBACtE,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;oBACtB,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;wBAAE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;oBAC5C,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC;oBACpB,OAAO,MAAM,CAAC;gBACf,CAAC;aACD,CAAC;YACF,OAAO,aAAa,CAAC;QACtB,CAAC;KACD,CAAC;IACF,8EAA8E;IAC9E,0BAA0B;IAC1B,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,YAAY,EAAE,CAAC;QACvC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE;YACnC,KAAK,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC;YACrD,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,IAAI;YAClB,QAAQ,EAAE,IAAI;SACd,CAAC,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,SAAS,aAAa,CAAC,IAAc;IACpC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,OAAO,GAAe;QAC3B,IAAI,KAAK;YACR,OAAO,IAAI,CAAC,IAAI,CAAC;QAClB,CAAC;QACD,IAAI,KAAK,CAAC,CAAS;YAClB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACf,CAAC;QACD,IAAI,IAAI;YACP,OAAO,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;QACxB,CAAC;QACD,IAAI,IAAI,CAAC,CAAW;YACnB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACf,CAAC;QACD,IAAI,OAAO;YACV,OAAO,IAAI,CAAC,SAAS,CAAC;QACvB,CAAC;QACD,IAAI,OAAO,CAAC,CAAqB;YAChC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACpB,CAAC;QACD,IAAI,OAAO;YACV,OAAO,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;QACD,IAAI,OAAO,CAAC,CAAqB;YAChC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QAClB,CAAC;KACD,CAAC;IACF,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED,2EAA2E;AAC3E,SAAS,oBAAoB,CAC5B,gBAAkD;IAElD,IAAI,gBAAgB,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACrD,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE,CAAC;QAC1C,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;IACtC,CAAC;IACD,OAAO,gBAAgB,CAAC;AACzB,CAAC;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,IAAa,EAAE,IAAa;IAChE,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAG,OAAO,EAAE,CAAC;IACzB,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC5C,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtB,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACJ,MAAM,GAAG,IAAI,EAAE,CAAC;IACjB,CAAC;YAAS,CAAC;QACV,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;IACjB,CAAC;IACD,wEAAwE;IACxE,uEAAuE;IACvE,gDAAgD;IAChD,IAAI,MAAM,IAAI,OAAQ,MAA6B,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACzE,MAAM,IAAI,KAAK,CACd,YAAY,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gHAAgH,CAChJ,CAAC;IACH,CAAC;AACF,CAAC;AA4HD,SAAS,aAAa,CAAC,CAAU;IAChC,IAAI,CAAC;QACJ,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC5B,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACR,2BAA2B;QAC3B,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACF,CAAC;AAED,SAAS,UAAU,CAAC,GAAY;IAC/B,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,WAAW,CAAC,GAAY;IAChC,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,mBAAmB,CAC3B,QAAgB,EAChB,GAAa,EACb,KAAa;IAEb,0EAA0E;IAC1E,oEAAoE;IACpE,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7C,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,GAAG,IAAI,CAAC,CAAC;YACT,SAAS;QACV,CAAC;QACD,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7B,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YAClB,GAAG,IAAI,GAAG,CAAC;YACX,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACV,CAAC;QACD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YAClB,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACV,CAAC;QACD,IACC,IAAI,KAAK,GAAG;YACZ,IAAI,KAAK,GAAG;YACZ,IAAI,KAAK,GAAG;YACZ,IAAI,KAAK,GAAG;YACZ,IAAI,KAAK,GAAG;YACZ,IAAI,KAAK,GAAG,EACX,CAAC;YACF,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACjB,CAAC,IAAI,CAAC,CAAC;YACP,GAAG,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC1E,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACV,CAAC;QACD,GAAG,IAAI,CAAC,CAAC;IACV,CAAC;IACD,OAAO,GAAG,CAAC;AACZ,CAAC;AAED,SAAS,oBAAoB,CAC5B,QAAgB,EAChB,GAAc,EACd,KAAa;IAEb,OAAO,QAAQ;SACb,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;SAC9B,OAAO,CAAC,sBAAsB,EAAE,CAAC,MAAM,EAAE,IAAY,EAAE,EAAE;QACzD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,MAAM,GAAY,GAAG,CAAC;QAC1B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC;gBACzD,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACP,OAAO,WAAW,CAAC;YACpB,CAAC;QACF,CAAC;QACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;YAChD,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;QAC9B,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,eAAe,CACvB,QAAgB,EAChB,GAAY,EACZ,KAAa;IAEb,IAAI,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,mBAAmB,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IACtE,IAAI,WAAW,CAAC,GAAG,CAAC;QAAE,OAAO,oBAAoB,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IACxE,4EAA4E;IAC5E,uCAAuC;IACvC,OAAO,GAAG,QAAQ,KAAK,KAAK,GAAG,CAAC;AACjC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,uBAAuB,CACtC,QAAgB,EAChB,GAAY,EACZ,KAAa;IAEb,2EAA2E;IAC3E,4EAA4E;IAC5E,6EAA6E;IAC7E,wDAAwD;IACxD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IACjD,OAAO,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,QAAgB,EAAE,EAAE;QACnE,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAC7C,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;YACvB,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;gBAC7C,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC;gBACpB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;QACD,8CAA8C;QAC9C,IAAI,MAAM,GAAY,GAAG,CAAC;QAC1B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACrC,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;gBAC5D,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACP,OAAO,KAAK,CAAC,CAAC,gCAAgC;YAC/C,CAAC;QACF,CAAC;QACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;YAChD,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;QAC9B,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,CAAC,IAAY,EAAE,EAAW,EAAE,EAAE,CACjD,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAa,CAAC;AAC7C,UAAU,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;AAChE,UAAU,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;AAChE,UAAU,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AAElE,MAAM,MAAM,GAAG,CAAC,CAAC,IAAY,EAAE,EAAW,EAAE,OAA8B,EAAE,EAAE;IAC7E,iEAAiE;IACjE,4DAA4D;IAC5D,MAAM,IAAI,GAAY,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IACxD,OAAO,UAAU,CAChB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAC3D,CAAC;AACH,CAAC,CAAY,CAAC;AACd,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE;IAC1B,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;AAChC,CAAC,CAAC;AACF,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,OAA8B,EAAE,EAAE,CAC1D,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC3E,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE;IACtB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AACvC,CAAC,CAAC;AACF,MAAM,CAAC,IAAI,GAAG,CAAsB,IAAmB,EAAE,EAAE;IAC1D,OAAO,CAAC,IAAY,EAAE,EAAsC,EAAE,EAAE;QAC/D,qEAAqE;QACrE,kEAAkE;QAClE,MAAM,QAAQ,GAAG,OAAO,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5D,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YAC/B,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;YACvD,YAAY,CAAC,YAAY,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC;AACH,CAAC,CAAC;AACF,MAAM,CAAC,KAAK,GAAG,CAAC,IAAY,EAAE,EAA0B,EAAS,EAAE;IAClE,4EAA4E;IAC5E,kDAAkD;IAClD,KACC,IAAI,QAAQ,GAA0B,OAAO,EAAE,EAC/C,QAAQ,KAAK,SAAS,EACtB,QAAQ,GAAG,QAAQ,CAAC,MAAM,EACzB,CAAC;QACF,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CACd,eAAe,IAAI,qCAAqC,QAAQ,CAAC,IAAI,wCAAwC,CAC7G,CAAC;QACH,CAAC;IACF,CAAC;IACD,4EAA4E;IAC5E,8EAA8E;IAC9E,8DAA8D;IAC9D,IAAI,QAA2B,CAAC;IAChC,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE;QAC/B,MAAM,KAAK,GAAG,OAAO,EAAE,CAAC;QACxB,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;QACrB,yEAAyE;QACzE,mEAAmE;QACnE,MAAM,aAAa,GAAa,EAAE,CAAC;QACnC,KAAK,IAAI,CAAC,GAA0B,KAAK,EAAE,CAAC,KAAK,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;YAC1E,IAAI,CAAC,CAAC,IAAI;gBAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC;QACD,MAAM,IAAI,GAAqC,EAAE,CAAC;QAClD,MAAM,KAAK,GAAU;YACpB,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;YACnC,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC;YAC/C,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC;YACjD,IAAI,EAAE;gBACL,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC;gBAChD,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC;gBAClD,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE;oBACf,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC;gBACxB,CAAC;gBACD,cAAc,EAAE,GAAG,EAAE;oBACpB,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC;gBACvB,CAAC;gBACD,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE;oBACZ,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC;gBACvB,CAAC;aACD;YACD,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;SAChC,CAAC;QACF,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC;QAC5B,QAAQ,GAAG,KAAK,CAAC;QACjB,EAAE,CAAC,KAAK,CAAC,CAAC;QACV,yEAAyE;QACzE,+DAA+D;QAC/D,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACpC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBAC3B,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;oBACpC,KAAK,MAAM,KAAK,IAAI,IAAI;wBAAE,KAAK,CAAC,MAAM,CAAC,CAAC;gBACzC,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC,CAAC,CAAC;IACH,oEAAoE;IACpE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,2BAA2B,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,QAAQ,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,KAAK,GAAG,CACd,QAAkD,EACzB,EAAE;IAC3B,OAAO,CAAC,GAAG,IAAU,EAAK,EAAE;QAC3B,MAAM,CAAC,GAAG,YAAY,EAAE,CAAC;QACzB,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACd,+EAA+E,CAC/E,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC;AACH,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,IAAI,GAKb;IACH,KAAK,CAAC,IAAI,EAAE,EAAE;QACb,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC5B,CAAC;CACD,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAa,UAAU,CAAC;AAC7C,MAAM,CAAC,MAAM,IAAI,GAAY,MAAM,CAAC;AACpC,MAAM,CAAC,MAAM,EAAE,GAAY,MAAM,CAAC;AAElC,MAAM,UAAU,OAAO,CAAC,IAAc,EAAE,EAAU;IACjD,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EAAU,EAAQ,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AACxE,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EAAU,EAAQ,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AACtE,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EAAU,EAAQ,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAC1E,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EAAU,EAAQ,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC"}
|
|
@@ -12,7 +12,22 @@
|
|
|
12
12
|
* - reverse insertion order
|
|
13
13
|
* - one cleanup throwing must not block the others
|
|
14
14
|
*/
|
|
15
|
-
|
|
15
|
+
import type { TestInstance } from "./suite.js";
|
|
16
|
+
/**
|
|
17
|
+
* A per-test teardown. Receives `(hasError, test)` (Japa parity): whether the
|
|
18
|
+
* test failed, and the running test's instance. Both params are optional so
|
|
19
|
+
* plain `() => …` cleanups stay valid.
|
|
20
|
+
*/
|
|
21
|
+
export type TestCleanup = (hasError?: boolean, test?: TestInstance) => void | Promise<void>;
|
|
22
|
+
/** Per-test assertion bookkeeping (drives `expect.assertions`/`hasAssertions`). */
|
|
23
|
+
export interface AssertionState {
|
|
24
|
+
/** Number of `expect(...)` matcher invocations observed this test. */
|
|
25
|
+
count: number;
|
|
26
|
+
/** Exact count required by `expect.assertions(n)`, if set. */
|
|
27
|
+
expected: number | undefined;
|
|
28
|
+
/** Whether `expect.hasAssertions()` demanded at least one assertion. */
|
|
29
|
+
hasAssertions: boolean;
|
|
30
|
+
}
|
|
16
31
|
export declare function withTestContext<T>(body: () => Promise<T>): Promise<T>;
|
|
17
32
|
/**
|
|
18
33
|
* Register a cleanup function that runs at the end of the current
|
|
@@ -22,4 +37,76 @@ export declare function withTestContext<T>(body: () => Promise<T>): Promise<T>;
|
|
|
22
37
|
*/
|
|
23
38
|
export declare function registerTestCleanup(cleanup: TestCleanup): boolean;
|
|
24
39
|
export declare function inTestContext(): boolean;
|
|
40
|
+
/** Attach the running test's instance to the active frame (for `ctx.test` + cleanups). */
|
|
41
|
+
export declare function setFrameTest(test: TestInstance): void;
|
|
42
|
+
/**
|
|
43
|
+
* Read the running test's instance from the active frame — the `t` handed to a
|
|
44
|
+
* Japa resource macro (`test.macro((t, …) => …)`). Undefined outside a test.
|
|
45
|
+
*/
|
|
46
|
+
export declare function getFrameTest(): TestInstance | undefined;
|
|
47
|
+
/** The running test, or `undefined` outside one (Japa `getActiveTest`). */
|
|
48
|
+
export declare function getActiveTest(): TestInstance | undefined;
|
|
49
|
+
/**
|
|
50
|
+
* The running test, or a thrown error outside one — Japa's
|
|
51
|
+
* `getActiveTestOrFail`, the guard a plugin uses before touching test state.
|
|
52
|
+
*/
|
|
53
|
+
export declare function getActiveTestOrFail(): TestInstance;
|
|
54
|
+
/** Record whether the test errored — read by the cleanup/outcome drains. */
|
|
55
|
+
export declare function setFrameOutcome(hadError: boolean): void;
|
|
56
|
+
/**
|
|
57
|
+
* Register a callback to run once the current test finishes, regardless of
|
|
58
|
+
* pass/fail. Mirrors Vitest's `onTestFinished`. Returns `false` when called
|
|
59
|
+
* outside a test frame.
|
|
60
|
+
*/
|
|
61
|
+
export declare function registerOnTestFinished(cb: TestCleanup): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Register a callback to run only when the current test fails. Mirrors
|
|
64
|
+
* Vitest's `onTestFailed`. Returns `false` when called outside a test frame.
|
|
65
|
+
*/
|
|
66
|
+
export declare function registerOnTestFailed(cb: TestCleanup): boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Register a teardown that runs after the current test regardless of outcome.
|
|
69
|
+
* Vitest-compatible public name for {@link registerOnTestFinished}.
|
|
70
|
+
*/
|
|
71
|
+
export declare function onTestFinished(cb: TestCleanup): void;
|
|
72
|
+
/**
|
|
73
|
+
* Register a callback that runs only if the current test fails.
|
|
74
|
+
* Vitest-compatible public name for {@link registerOnTestFailed}.
|
|
75
|
+
*/
|
|
76
|
+
export declare function onTestFailed(cb: TestCleanup): void;
|
|
77
|
+
/**
|
|
78
|
+
* Callbacks registered for EVERY test of the run (Japa `Test.executed`). Japa
|
|
79
|
+
* plugins use it to check after each test that something held — `@japa/assert`
|
|
80
|
+
* validates its planned-assertion count there.
|
|
81
|
+
*/
|
|
82
|
+
type ExecutedHook = (test: {
|
|
83
|
+
options: unknown;
|
|
84
|
+
context: unknown;
|
|
85
|
+
}, hasError: boolean) => void | Promise<void>;
|
|
86
|
+
/** Register a per-test hook for the whole run (Japa `Test.executed`). */
|
|
87
|
+
export declare function registerExecutedHook(fn: ExecutedHook): void;
|
|
88
|
+
/** Test seam: drop every registered `executed` hook. */
|
|
89
|
+
export declare function resetExecutedHooks(): void;
|
|
90
|
+
/** Attach the injected context to the current frame. */
|
|
91
|
+
export declare function setFrameContext(context: unknown): void;
|
|
92
|
+
/**
|
|
93
|
+
* Drain the `onTestFinished`/`onTestFailed` callbacks for the current frame,
|
|
94
|
+
* then the run-wide `Test.executed` hooks.
|
|
95
|
+
*
|
|
96
|
+
* Returns what an `executed` hook threw, if one did. That hook IS a verdict —
|
|
97
|
+
* `@japa/assert` validates `assert.plan(n)` there and throws when the count is
|
|
98
|
+
* wrong — so swallowing it would let a plugin's whole reason for existing pass
|
|
99
|
+
* green. The frame's own callbacks keep being logged rather than thrown: they
|
|
100
|
+
* are teardown, and a broken one must not invent a failure.
|
|
101
|
+
*/
|
|
102
|
+
export declare function drainTestOutcomeHooks(failed: boolean): Promise<unknown>;
|
|
103
|
+
/** Increment the assertion counter for the active test (no-op outside a test). */
|
|
104
|
+
export declare function recordAssertion(): void;
|
|
105
|
+
/** Declare that the current test must make exactly `n` assertions. */
|
|
106
|
+
export declare function setExpectedAssertions(n: number): void;
|
|
107
|
+
/** Declare that the current test must make at least one assertion. */
|
|
108
|
+
export declare function setHasAssertions(): void;
|
|
109
|
+
/** Read the assertion state of the active frame, if any. */
|
|
110
|
+
export declare function getAssertionState(): AssertionState | undefined;
|
|
111
|
+
export {};
|
|
25
112
|
//# sourceMappingURL=test-context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-context.d.ts","sourceRoot":"","sources":["../../src/runtime/test-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;
|
|
1
|
+
{"version":3,"file":"test-context.d.ts","sourceRoot":"","sources":["../../src/runtime/test-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,CACzB,QAAQ,CAAC,EAAE,OAAO,EAClB,IAAI,CAAC,EAAE,YAAY,KACf,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B,mFAAmF;AACnF,MAAM,WAAW,cAAc;IAC9B,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,wEAAwE;IACxE,aAAa,EAAE,OAAO,CAAC;CACvB;AAmBD,wBAAsB,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAwB3E;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAKjE;AAED,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAED,0FAA0F;AAC1F,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAGrD;AAED;;;GAGG;AACH,wBAAgB,YAAY,IAAI,YAAY,GAAG,SAAS,CAEvD;AAED,2EAA2E;AAC3E,wBAAgB,aAAa,IAAI,YAAY,GAAG,SAAS,CAExD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,YAAY,CAQlD;AAED,4EAA4E;AAC5E,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAGvD;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,WAAW,GAAG,OAAO,CAK/D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,WAAW,GAAG,OAAO,CAK7D;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI,CAEpD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI,CAElD;AAED;;;;GAIG;AACH,KAAK,YAAY,GAAG,CACnB,IAAI,EAAE;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,EAC5C,QAAQ,EAAE,OAAO,KACb,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAI1B,yEAAyE;AACzE,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAE3D;AAED,wDAAwD;AACxD,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED,wDAAwD;AACxD,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAGtD;AAED;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAoC7E;AAED,kFAAkF;AAClF,wBAAgB,eAAe,IAAI,IAAI,CAGtC;AAED,sEAAsE;AACtE,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAGrD;AAED,sEAAsE;AACtE,wBAAgB,gBAAgB,IAAI,IAAI,CAGvC;AAED,4DAA4D;AAC5D,wBAAgB,iBAAiB,IAAI,cAAc,GAAG,SAAS,CAE9D"}
|