@c9up/helix 0.2.3 → 0.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -111
- package/bin/helix.js +24 -41
- package/dist/cli/failed-cache.d.ts +2 -2
- package/dist/cli/failed-cache.js +2 -2
- package/dist/cli/pool.d.ts +3 -3
- package/dist/cli/reporter.d.ts +1 -1
- package/dist/cli/reporter.js +2 -2
- package/dist/cli/run.d.ts +5 -5
- package/dist/cli/run.js +4 -4
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/runner.d.ts +1 -1
- package/dist/cli/runner.js +1 -1
- package/dist/cli/suites.d.ts +4 -4
- package/dist/cli/suites.d.ts.map +1 -1
- package/dist/cli/suites.js +4 -4
- package/dist/cli/suites.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/native/generated.d.ts +2 -2
- package/dist/native/generated.d.ts.map +1 -1
- package/dist/runtime/assert.d.ts +18 -18
- package/dist/runtime/assert.d.ts.map +1 -1
- package/dist/runtime/assert.js +3 -3
- package/dist/runtime/assert.js.map +1 -1
- package/dist/runtime/bootstrap.d.ts +2 -2
- package/dist/runtime/bootstrap.js +3 -3
- package/dist/runtime/bootstrap.js.map +1 -1
- package/dist/runtime/cli-args.d.ts +6 -6
- package/dist/runtime/cli-args.d.ts.map +1 -1
- package/dist/runtime/cli-args.js +5 -5
- package/dist/runtime/cli-args.js.map +1 -1
- package/dist/runtime/cli-worker.js +3 -0
- package/dist/runtime/cli-worker.js.map +1 -1
- package/dist/runtime/configure.d.ts +43 -43
- package/dist/runtime/configure.d.ts.map +1 -1
- package/dist/runtime/configure.js +11 -11
- package/dist/runtime/configure.js.map +1 -1
- package/dist/runtime/context.d.ts +9 -9
- package/dist/runtime/context.d.ts.map +1 -1
- package/dist/runtime/context.js +10 -10
- package/dist/runtime/context.js.map +1 -1
- package/dist/runtime/emitter.d.ts +13 -13
- package/dist/runtime/emitter.d.ts.map +1 -1
- package/dist/runtime/emitter.js +6 -6
- package/dist/runtime/expect.d.ts.map +1 -1
- package/dist/runtime/expect.js +2 -2
- package/dist/runtime/expect.js.map +1 -1
- package/dist/runtime/global-hooks.d.ts +1 -1
- package/dist/runtime/global-hooks.js +1 -1
- package/dist/runtime/matchers.d.ts.map +1 -1
- package/dist/runtime/matchers.js +3 -6
- package/dist/runtime/matchers.js.map +1 -1
- package/dist/runtime/run.d.ts +13 -13
- package/dist/runtime/run.d.ts.map +1 -1
- package/dist/runtime/run.js +47 -47
- package/dist/runtime/run.js.map +1 -1
- package/dist/runtime/runner.d.ts +12 -12
- package/dist/runtime/runner.d.ts.map +1 -1
- package/dist/runtime/runner.js +10 -10
- package/dist/runtime/runner.js.map +1 -1
- package/dist/runtime/suite-config.d.ts +1 -1
- package/dist/runtime/suite-config.js +1 -1
- package/dist/runtime/suite-taps.d.ts +17 -17
- package/dist/runtime/suite-taps.d.ts.map +1 -1
- package/dist/runtime/suite-taps.js +7 -7
- package/dist/runtime/suite-taps.js.map +1 -1
- package/dist/runtime/suite.d.ts +43 -43
- package/dist/runtime/suite.d.ts.map +1 -1
- package/dist/runtime/suite.js +16 -15
- package/dist/runtime/suite.js.map +1 -1
- package/dist/runtime/test-context.d.ts +8 -8
- package/dist/runtime/test-context.d.ts.map +1 -1
- package/dist/runtime/test-context.js +5 -5
- package/dist/runtime/test-context.js.map +1 -1
- package/dist/runtime/thenable.d.ts +22 -0
- package/dist/runtime/thenable.d.ts.map +1 -0
- package/dist/runtime/thenable.js +35 -0
- package/dist/runtime/thenable.js.map +1 -0
- package/dist/runtime/worker.js +4 -4
- package/dist/runtime/worker.js.map +1 -1
- package/dist/time/freeze.js +1 -0
- package/dist/time/freeze.js.map +1 -1
- package/index.win32-x64-msvc.node +0 -0
- package/package.json +1 -1
package/dist/runtime/runner.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The `runner` handed to plugins —
|
|
2
|
+
* The `runner` handed to plugins — helix's `Runner`, minus what a worker cannot
|
|
3
3
|
* honestly own.
|
|
4
4
|
*
|
|
5
|
-
* Present, and identical to
|
|
5
|
+
* Present, and identical to helix: `getSummary()`, `failed`, `bail(toggle)`,
|
|
6
6
|
* `onSuite(callback)`. The summary is tracked by subscribing to the very events
|
|
7
7
|
* the runtime emits, so it can never drift from what a reporter sees.
|
|
8
8
|
*
|
|
9
|
-
* `registerReporter` works, with its scope stated: a
|
|
9
|
+
* `registerReporter` works, with its scope stated: a helix reporter is
|
|
10
10
|
* `(runner, emitter) => void`, and the emitter it gets is this worker's, which
|
|
11
11
|
* sees this worker's FILE. That is what a worker can honestly offer, and it
|
|
12
|
-
* beats the alternative — the method being absent, so a
|
|
12
|
+
* beats the alternative — the method being absent, so a plugin calling it
|
|
13
13
|
* dies on a `TypeError` with nothing explaining why. Run-wide output stays the
|
|
14
14
|
* CLI's job: `--reporters`, or `run({ reporterInstance })`.
|
|
15
15
|
*
|
|
@@ -88,12 +88,12 @@ export class Runner {
|
|
|
88
88
|
this.#hasError = false;
|
|
89
89
|
this.#duration = 0;
|
|
90
90
|
}
|
|
91
|
-
/** Whether anything has failed so far (
|
|
91
|
+
/** Whether anything has failed so far (`Runner#failed`). */
|
|
92
92
|
get failed() {
|
|
93
93
|
return this.#hasError || this.#aggregates.failed > 0;
|
|
94
94
|
}
|
|
95
95
|
/**
|
|
96
|
-
* Stop at the first failure (
|
|
96
|
+
* Stop at the first failure (`Runner#bail`). A plugin runs before the
|
|
97
97
|
* test file is collected, so this reaches the run it was called for; the
|
|
98
98
|
* `--bail` flag still wins when both are set.
|
|
99
99
|
*/
|
|
@@ -102,7 +102,7 @@ export class Runner {
|
|
|
102
102
|
return this;
|
|
103
103
|
}
|
|
104
104
|
/**
|
|
105
|
-
* Configure the suite before it runs (
|
|
105
|
+
* Configure the suite before it runs (`Runner#onSuite`). helix calls the
|
|
106
106
|
* callback once per suite; a worker runs exactly one, so it is called once,
|
|
107
107
|
* immediately — plugins run before the suite's hooks, so what the callback
|
|
108
108
|
* registers still takes effect.
|
|
@@ -114,7 +114,7 @@ export class Runner {
|
|
|
114
114
|
return this;
|
|
115
115
|
}
|
|
116
116
|
/**
|
|
117
|
-
* Register a
|
|
117
|
+
* Register a helix reporter (`Runner#registerReporter`). It is handed
|
|
118
118
|
* this runner and this worker's emitter, so it observes THIS FILE — the
|
|
119
119
|
* whole run is only visible from the CLI process.
|
|
120
120
|
*/
|
|
@@ -123,7 +123,7 @@ export class Runner {
|
|
|
123
123
|
void handler(this, emitter);
|
|
124
124
|
return this;
|
|
125
125
|
}
|
|
126
|
-
/** The suites this worker runs — exactly one (
|
|
126
|
+
/** The suites this worker runs — exactly one (`Runner#suites`). */
|
|
127
127
|
get suites() {
|
|
128
128
|
const suite = currentSuite();
|
|
129
129
|
return suite === undefined ? [] : [suite];
|
|
@@ -146,7 +146,7 @@ export class Runner {
|
|
|
146
146
|
}
|
|
147
147
|
/**
|
|
148
148
|
* The run's summary. Meaningful once `runner:end` has fired — the point a
|
|
149
|
-
*
|
|
149
|
+
* helix reporter reads it from.
|
|
150
150
|
*/
|
|
151
151
|
getSummary() {
|
|
152
152
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/runtime/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAgB,OAAO,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,YAAY,EAAoB,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAY1E;;;;GAIG;AACH,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAChD,YAAY,MAAc;QACzB,KAAK,CACJ,UAAU,MAAM,uDAAuD;YACtE,uEAAuE;YACvE,wEAAwE;YACxE,iCAAiC,CAClC,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACtC,CAAC;CACD;AAqBD;;;GAGG;AACH,MAAM,OAAO,MAAM;IACT,WAAW,GAAsB;QACzC,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,CAAC;KACP,CAAC;IACO,kBAAkB,GAAa,EAAE,CAAC;IAC3C,SAAS,GAAG,KAAK,CAAC;IAClB,SAAS,GAAG,CAAC,CAAC;IACd,UAAU,GAAG,CAAC,CAAC;IAEf,YAAY,OAAgB;QAC3B,OAAO,CAAC,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE;YAC/B,wEAAwE;YACxE,+DAA+D;YAC/D,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9B,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE;YAC/B,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,CAAC;YAC5B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnB,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,CAAC;gBAC7B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACnD,CAAC;iBAAM,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;gBACjC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,CAAC;YAC5B,CAAC;iBAAM,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;gBACpC,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,CAAC,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,CAAC;YAC9B,CAAC;QACF,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE;YACpC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC;YAClC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;QAC/C,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,oDAAoD;IACpD,MAAM;QACL,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IACpB,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/runtime/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `suites[].configure` — the per-suite callback
|
|
2
|
+
* `suites[].configure` — the per-suite callback helix's `TestSuite` carries.
|
|
3
3
|
*
|
|
4
4
|
* A function cannot cross the CLI→worker boundary, so the worker re-imports the
|
|
5
5
|
* module that declared it. The CLI names that module in `HELIX_SUITE_CONFIG`
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `suites[].configure` — the per-suite callback
|
|
2
|
+
* `suites[].configure` — the per-suite callback helix's `TestSuite` carries.
|
|
3
3
|
*
|
|
4
4
|
* A function cannot cross the CLI→worker boundary, so the worker re-imports the
|
|
5
5
|
* module that declared it. The CLI names that module in `HELIX_SUITE_CONFIG`
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `suite.onTest()` / `suite.onGroup()` — the taps
|
|
2
|
+
* `suite.onTest()` / `suite.onGroup()` — the taps helix's `Suite` exposes to
|
|
3
3
|
* `configureSuite`, so a bootstrap can configure every test or group of a suite
|
|
4
4
|
* without touching the test files.
|
|
5
5
|
*
|
|
@@ -9,10 +9,10 @@
|
|
|
9
9
|
*
|
|
10
10
|
* `configureSuite` runs before the test file is imported, so the callbacks are
|
|
11
11
|
* stored and applied to the collected tree just before execution — the same
|
|
12
|
-
* point at which
|
|
12
|
+
* point at which helix's taps fire (each test, once, before it runs).
|
|
13
13
|
*
|
|
14
14
|
* Each method maps onto a field the collection tree already carries; nothing
|
|
15
|
-
* here is a facade over behaviour helix does not have.
|
|
15
|
+
* here is a facade over behaviour helix does not have. helix `Test` members that
|
|
16
16
|
* belong to EXECUTION rather than configuration — `run`, `exec`, `context`,
|
|
17
17
|
* `executed`, `failed`, `options` — are absent: helix owns execution, and a
|
|
18
18
|
* handle that pretended otherwise would be lying about what a callback can do.
|
|
@@ -21,9 +21,9 @@ import type { Runner } from "./runner.js";
|
|
|
21
21
|
import type { SuiteNode, TestNode } from "./suite.js";
|
|
22
22
|
/** A hook body, as `test.setup()` / `group.setup()` take it. */
|
|
23
23
|
type Handler = () => void | Promise<void>;
|
|
24
|
-
/** How `test.tags()` combines with the tags already declared
|
|
24
|
+
/** How `test.tags()` combines with the tags already declared. */
|
|
25
25
|
export type TagStrategy = "replace" | "append" | "prepend";
|
|
26
|
-
/** The
|
|
26
|
+
/** The helix `Test` surface a tap can configure. */
|
|
27
27
|
export interface TestHandle {
|
|
28
28
|
/** The declared title. */
|
|
29
29
|
readonly title: string;
|
|
@@ -39,15 +39,15 @@ export interface TestHandle {
|
|
|
39
39
|
setup(handler: Handler): TestHandle;
|
|
40
40
|
teardown(handler: Handler): TestHandle;
|
|
41
41
|
}
|
|
42
|
-
/** The
|
|
42
|
+
/** The helix `Group` surface a tap can configure. */
|
|
43
43
|
export interface GroupHandle {
|
|
44
44
|
/** The declared title. */
|
|
45
45
|
readonly title: string;
|
|
46
|
-
/** Configure every test of this group (
|
|
46
|
+
/** Configure every test of this group (`group.tap`). */
|
|
47
47
|
tap(callback: (test: TestHandle) => void): GroupHandle;
|
|
48
48
|
setup(handler: Handler): GroupHandle;
|
|
49
49
|
teardown(handler: Handler): GroupHandle;
|
|
50
|
-
/** Per-test hooks and defaults —
|
|
50
|
+
/** Per-test hooks and defaults — helix `group.each`. */
|
|
51
51
|
readonly each: {
|
|
52
52
|
setup(handler: Handler): void;
|
|
53
53
|
teardown(handler: Handler): void;
|
|
@@ -58,14 +58,14 @@ export interface GroupHandle {
|
|
|
58
58
|
export declare function testHandle(node: TestNode): TestHandle;
|
|
59
59
|
export declare function groupHandle(node: SuiteNode): GroupHandle;
|
|
60
60
|
/**
|
|
61
|
-
* What a `setup` hook may return so it gets undone afterwards —
|
|
61
|
+
* What a `setup` hook may return so it gets undone afterwards — helix's
|
|
62
62
|
* `@poppinss/hooks` cleanup handler, called with `(error, runner)`.
|
|
63
63
|
*/
|
|
64
64
|
export type SuiteHookCleanup = (error: Error | null, runner: Runner) => void | Promise<void>;
|
|
65
65
|
/**
|
|
66
66
|
* A run-level hook, as `suite.setup()` / `suite.teardown()` take it.
|
|
67
67
|
*
|
|
68
|
-
*
|
|
68
|
+
* The API hands it the `runner`, and lets a `setup` hook RETURN its own undo — the
|
|
69
69
|
* idiom AdonisJS is written in (`setup: [() => testUtils.db().migrate()]`,
|
|
70
70
|
* where `migrate()` resolves to the rollback). Both are honoured.
|
|
71
71
|
*
|
|
@@ -74,7 +74,7 @@ export type SuiteHookCleanup = (error: Error | null, runner: Runner) => void | P
|
|
|
74
74
|
*/
|
|
75
75
|
export type SuiteHook = ((runner: Runner) => void | Promise<void>) | ((runner: Runner) => SuiteHookCleanup | Promise<SuiteHookCleanup>);
|
|
76
76
|
/**
|
|
77
|
-
* What `configureSuite` and `runner.onSuite` receive —
|
|
77
|
+
* What `configureSuite` and `runner.onSuite` receive — helix's `Suite`, minus
|
|
78
78
|
* the members that only make sense to whoever OWNS execution (`add`, `stack`,
|
|
79
79
|
* `exec`, `failed`): helix builds the tree from the file's own `describe`/`test`
|
|
80
80
|
* and runs it itself, so a handle exposing those would be lying about what a
|
|
@@ -87,11 +87,11 @@ export interface SuiteHandle {
|
|
|
87
87
|
setup(fn: SuiteHook): SuiteHandle;
|
|
88
88
|
/** Run after this suite's tests, in reverse registration order. */
|
|
89
89
|
teardown(fn: SuiteHook): SuiteHandle;
|
|
90
|
-
/** Configure every test of the suite before it runs (
|
|
90
|
+
/** Configure every test of the suite before it runs (`Suite#onTest`). */
|
|
91
91
|
onTest(callback: (test: TestHandle) => void): SuiteHandle;
|
|
92
|
-
/** Configure every group of the suite before it runs (
|
|
92
|
+
/** Configure every group of the suite before it runs (`Suite#onGroup`). */
|
|
93
93
|
onGroup(callback: (group: GroupHandle) => void): SuiteHandle;
|
|
94
|
-
/** Stop this suite at the first failure (
|
|
94
|
+
/** Stop this suite at the first failure (`Suite#bail`). */
|
|
95
95
|
bail(toggle?: boolean): SuiteHandle;
|
|
96
96
|
}
|
|
97
97
|
/**
|
|
@@ -102,11 +102,11 @@ export interface SuiteHandle {
|
|
|
102
102
|
export declare function makeSuiteHandle(name: string, setup: SuiteHook[], teardown: SuiteHook[]): SuiteHandle;
|
|
103
103
|
export declare function setCurrentSuite(handle: SuiteHandle | undefined): void;
|
|
104
104
|
export declare function currentSuite(): SuiteHandle | undefined;
|
|
105
|
-
/** Register a per-test tap (
|
|
105
|
+
/** Register a per-test tap (`Suite#onTest`). */
|
|
106
106
|
export declare function registerTestTap(callback: (test: TestHandle) => void): void;
|
|
107
|
-
/** Register a per-group tap (
|
|
107
|
+
/** Register a per-group tap (`Suite#onGroup`). */
|
|
108
108
|
export declare function registerGroupTap(callback: (group: GroupHandle) => void): void;
|
|
109
|
-
/** Ask this suite to stop at the first failure (
|
|
109
|
+
/** Ask this suite to stop at the first failure (`Suite#bail`). */
|
|
110
110
|
export declare function setBail(toggle: boolean): void;
|
|
111
111
|
/** Whether a tap asked for bail; `undefined` leaves the CLI flag in charge. */
|
|
112
112
|
export declare function tappedBail(): boolean | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"suite-taps.d.ts","sourceRoot":"","sources":["../../src/runtime/suite-taps.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtD,gEAAgE;AAChE,KAAK,OAAO,GAAG,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1C
|
|
1
|
+
{"version":3,"file":"suite-taps.d.ts","sourceRoot":"","sources":["../../src/runtime/suite-taps.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `suite.onTest()` / `suite.onGroup()` — the taps
|
|
2
|
+
* `suite.onTest()` / `suite.onGroup()` — the taps helix's `Suite` exposes to
|
|
3
3
|
* `configureSuite`, so a bootstrap can configure every test or group of a suite
|
|
4
4
|
* without touching the test files.
|
|
5
5
|
*
|
|
@@ -9,10 +9,10 @@
|
|
|
9
9
|
*
|
|
10
10
|
* `configureSuite` runs before the test file is imported, so the callbacks are
|
|
11
11
|
* stored and applied to the collected tree just before execution — the same
|
|
12
|
-
* point at which
|
|
12
|
+
* point at which helix's taps fire (each test, once, before it runs).
|
|
13
13
|
*
|
|
14
14
|
* Each method maps onto a field the collection tree already carries; nothing
|
|
15
|
-
* here is a facade over behaviour helix does not have.
|
|
15
|
+
* here is a facade over behaviour helix does not have. helix `Test` members that
|
|
16
16
|
* belong to EXECUTION rather than configuration — `run`, `exec`, `context`,
|
|
17
17
|
* `executed`, `failed`, `options` — are absent: helix owns execution, and a
|
|
18
18
|
* handle that pretended otherwise would be lying about what a callback can do.
|
|
@@ -155,7 +155,7 @@ export function makeSuiteHandle(name, setup, teardown) {
|
|
|
155
155
|
/**
|
|
156
156
|
* The suite the current `configure()` call is running for. Set before plugins
|
|
157
157
|
* run so `runner.onSuite` has something to hand back — a worker runs exactly
|
|
158
|
-
* one suite, so
|
|
158
|
+
* one suite, so helix's "called once per suite" is "called once".
|
|
159
159
|
*/
|
|
160
160
|
let current;
|
|
161
161
|
export function setCurrentSuite(handle) {
|
|
@@ -170,15 +170,15 @@ export function currentSuite() {
|
|
|
170
170
|
* like the rest of the bootstrap state.
|
|
171
171
|
*/
|
|
172
172
|
const taps = { onTest: [], onGroup: [] };
|
|
173
|
-
/** Register a per-test tap (
|
|
173
|
+
/** Register a per-test tap (`Suite#onTest`). */
|
|
174
174
|
export function registerTestTap(callback) {
|
|
175
175
|
taps.onTest.push(callback);
|
|
176
176
|
}
|
|
177
|
-
/** Register a per-group tap (
|
|
177
|
+
/** Register a per-group tap (`Suite#onGroup`). */
|
|
178
178
|
export function registerGroupTap(callback) {
|
|
179
179
|
taps.onGroup.push(callback);
|
|
180
180
|
}
|
|
181
|
-
/** Ask this suite to stop at the first failure (
|
|
181
|
+
/** Ask this suite to stop at the first failure (`Suite#bail`). */
|
|
182
182
|
export function setBail(toggle) {
|
|
183
183
|
taps.bail = toggle;
|
|
184
184
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"suite-taps.js","sourceRoot":"","sources":["../../src/runtime/suite-taps.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"suite-taps.js","sourceRoot":"","sources":["../../src/runtime/suite-taps.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime/suite.d.ts
CHANGED
|
@@ -11,25 +11,25 @@ import type { TestContext } from "./context.js";
|
|
|
11
11
|
import { type TestCleanup } from "./test-context.js";
|
|
12
12
|
/**
|
|
13
13
|
* Signals completion of a `waitForDone()` test. Call `done()` to pass, or
|
|
14
|
-
* `done(error)` to fail
|
|
14
|
+
* `done(error)` to fail. Ignored unless `test.waitForDone()`.
|
|
15
15
|
*/
|
|
16
16
|
export type DoneFn = (error?: unknown) => void;
|
|
17
17
|
/**
|
|
18
18
|
* A test body. Receives the injected {@link TestContext} as its first argument
|
|
19
|
-
* and a `done` callback as its second
|
|
19
|
+
* and a `done` callback as its second. Existing zero/one-argument
|
|
20
20
|
* bodies stay valid — they simply ignore the extra parameters.
|
|
21
21
|
*/
|
|
22
22
|
export type TestFn = (ctx: TestContext, done: DoneFn) => void | Promise<void>;
|
|
23
23
|
export type SuiteFn = () => void;
|
|
24
24
|
/**
|
|
25
|
-
* Teardown a hook may return (Vitest
|
|
25
|
+
* Teardown a hook may return (Vitest parity). Receives `(hasError, subject)`
|
|
26
26
|
* — whether the test/group errored, and the Test or Group instance. Both params
|
|
27
27
|
* are optional so plain `() => …` cleanups stay valid.
|
|
28
28
|
*/
|
|
29
29
|
export type CleanupFn = (hasError?: boolean, subject?: TestInstance | GroupInstance) => void | Promise<void>;
|
|
30
30
|
/**
|
|
31
31
|
* A lifecycle hook. Receives the Test instance (test hooks) or Group instance
|
|
32
|
-
* (group hooks) as its argument
|
|
32
|
+
* (group hooks) as its argument; may return a {@link CleanupFn}.
|
|
33
33
|
* Existing zero-argument hooks stay valid.
|
|
34
34
|
*/
|
|
35
35
|
export type HookFn = ((subject?: TestInstance | GroupInstance) => void | Promise<void>) | ((subject?: TestInstance | GroupInstance) => CleanupFn | Promise<CleanupFn>);
|
|
@@ -71,11 +71,11 @@ export interface TestNode {
|
|
|
71
71
|
setups?: HookFn[];
|
|
72
72
|
/** Per-test teardown hooks — `test.teardown(fn)` (run just after this test). */
|
|
73
73
|
teardowns?: HookFn[];
|
|
74
|
-
/** Resolved dataset rows backing this test — `test(name, fn).with(rows)` (
|
|
74
|
+
/** Resolved dataset rows backing this test — `test(name, fn).with(rows)` (`ctx.test.dataset`). */
|
|
75
75
|
dataset?: readonly unknown[];
|
|
76
76
|
/**
|
|
77
77
|
* Deferred dataset source — `test(name, fn).with(rows)`. An array OR a
|
|
78
|
-
* (possibly async) function returning one
|
|
78
|
+
* (possibly async) function returning one. Resolved at RUN time
|
|
79
79
|
* so async datasets work; the node then expands into one result per row.
|
|
80
80
|
*/
|
|
81
81
|
datasetFn?: DatasetSource<unknown>;
|
|
@@ -90,13 +90,13 @@ export interface TestNode {
|
|
|
90
90
|
/** Wait for the `done()` callback before completing — `test.waitForDone()`. */
|
|
91
91
|
waitForDone?: boolean;
|
|
92
92
|
/**
|
|
93
|
-
* Deferred skip condition — `test.skip(fn)` where `fn` may be async (
|
|
93
|
+
* Deferred skip condition — `test.skip(fn)` where `fn` may be async (helix
|
|
94
94
|
* parity). Evaluated at RUN time. A static boolean sets `mode` at collection
|
|
95
95
|
* instead, so this only ever holds a function.
|
|
96
96
|
*/
|
|
97
97
|
skipCondition?: () => boolean | Promise<boolean>;
|
|
98
98
|
}
|
|
99
|
-
/** A group's instance, passed to `group.setup`/`teardown` hooks
|
|
99
|
+
/** A group's instance, passed to `group.setup`/`teardown` hooks. */
|
|
100
100
|
export interface GroupInstance {
|
|
101
101
|
/** The group's own name. */
|
|
102
102
|
title: string;
|
|
@@ -104,7 +104,7 @@ export interface GroupInstance {
|
|
|
104
104
|
fullName: string;
|
|
105
105
|
}
|
|
106
106
|
/**
|
|
107
|
-
* The running test's own instance, injected as `ctx.test
|
|
107
|
+
* The running test's own instance, injected as `ctx.test`. Read
|
|
108
108
|
* access to the test's identity + resolved options + dataset.
|
|
109
109
|
*/
|
|
110
110
|
export interface TestInstance {
|
|
@@ -112,7 +112,7 @@ export interface TestInstance {
|
|
|
112
112
|
title: string;
|
|
113
113
|
/** Fully-qualified dotted name (suite path + title). */
|
|
114
114
|
fullName: string;
|
|
115
|
-
/** Resolved options in effect for this run (
|
|
115
|
+
/** Resolved options in effect for this run (`test.options`). */
|
|
116
116
|
options: {
|
|
117
117
|
/** The test's title (leaf name). */
|
|
118
118
|
title: string;
|
|
@@ -121,20 +121,20 @@ export interface TestInstance {
|
|
|
121
121
|
tags: readonly string[];
|
|
122
122
|
/** Whether this is a `todo` test. Always `false` inside a running test. */
|
|
123
123
|
isTodo: boolean;
|
|
124
|
-
/** Whether the test is expected to throw — `test.fails()
|
|
124
|
+
/** Whether the test is expected to throw — `test.fails()`. */
|
|
125
125
|
isFailing: boolean;
|
|
126
126
|
/**
|
|
127
|
-
* Free-form metadata bag (
|
|
127
|
+
* Free-form metadata bag (`options.meta`): `fileName`, `group` (the
|
|
128
128
|
* enclosing {@link Group} instance, or `undefined` outside a group),
|
|
129
129
|
* `suite` (`{ name }` — `"default"` unless `configure({ suite })` or
|
|
130
|
-
* `--suite` names it,
|
|
130
|
+
* `--suite` names it, the implicit suite), and `abort`.
|
|
131
131
|
*/
|
|
132
132
|
meta: Record<string, unknown>;
|
|
133
133
|
};
|
|
134
134
|
/** The full dataset when created via `test(name, fn).with(rows)`, else undefined. */
|
|
135
135
|
dataset?: readonly unknown[];
|
|
136
136
|
/**
|
|
137
|
-
* The injected {@link TestContext} for this run —
|
|
137
|
+
* The injected {@link TestContext} for this run — helix's `$test.context`. Set
|
|
138
138
|
* before the `beforeEach` chain, so lifecycle hooks can reach it; the same
|
|
139
139
|
* context is passed to the test body as its first argument. Undefined only
|
|
140
140
|
* outside an active run.
|
|
@@ -143,14 +143,14 @@ export interface TestInstance {
|
|
|
143
143
|
/** Whether the test was pinned via `test.pin()`. */
|
|
144
144
|
isPinned: boolean;
|
|
145
145
|
/**
|
|
146
|
-
* Re-arm the running test's timeout (
|
|
146
|
+
* Re-arm the running test's timeout (`ctx.test.resetTimeout`). With no
|
|
147
147
|
* argument, restarts the current timeout; with `ms`, sets a new one. Useful
|
|
148
148
|
* for long polling steps that shouldn't count against a single deadline.
|
|
149
149
|
*/
|
|
150
150
|
resetTimeout(ms?: number): void;
|
|
151
151
|
/**
|
|
152
152
|
* Register a teardown that runs at the end of THIS test regardless of outcome
|
|
153
|
-
* (
|
|
153
|
+
* (`test.cleanup`). This is the same registry as `ctx.cleanup`; it is
|
|
154
154
|
* exposed here so a resource macro's `t` (see `test.macro`) can register
|
|
155
155
|
* cleanups — `test.macro((t) => { t.cleanup(() => …) })`.
|
|
156
156
|
*/
|
|
@@ -168,39 +168,39 @@ export interface TestOptions {
|
|
|
168
168
|
fails?: boolean;
|
|
169
169
|
}
|
|
170
170
|
/**
|
|
171
|
-
* Chainable handle returned by `test(...)` —
|
|
171
|
+
* Chainable handle returned by `test(...)` — helix-style fluent modifiers that
|
|
172
172
|
* mutate the just-registered node. Ignoring the return keeps Vitest's
|
|
173
|
-
* `test(name, fn)` ergonomics; chaining adds
|
|
173
|
+
* `test(name, fn)` ergonomics; chaining adds `helix` parity.
|
|
174
174
|
*/
|
|
175
|
-
/** How `tags()` merges with any tags already on the test
|
|
175
|
+
/** How `tags()` merges with any tags already on the test. */
|
|
176
176
|
export type TagStrategy = "replace" | "append" | "prepend";
|
|
177
177
|
export interface TestHandle {
|
|
178
178
|
retry(n: number): TestHandle;
|
|
179
179
|
timeout(ms: number): TestHandle;
|
|
180
180
|
disableTimeout(): TestHandle;
|
|
181
181
|
/**
|
|
182
|
-
* Attach tags.
|
|
182
|
+
* Attach tags. `tags(['@slow'], 'append')`. `strategy` defaults
|
|
183
183
|
* to `'replace'`. A single string is accepted as a shorthand.
|
|
184
184
|
*/
|
|
185
185
|
tags(tags: string | string[], strategy?: TagStrategy): TestHandle;
|
|
186
|
-
/** Expect the test to throw. Optional `reason` documents why
|
|
186
|
+
/** Expect the test to throw. Optional `reason` documents why. */
|
|
187
187
|
fails(reason?: string): TestHandle;
|
|
188
|
-
/** Run a hook just before THIS test (
|
|
188
|
+
/** Run a hook just before THIS test (`test.setup`). */
|
|
189
189
|
setup(fn: HookFn): TestHandle;
|
|
190
|
-
/** Run a hook just after THIS test (
|
|
190
|
+
/** Run a hook just after THIS test (`test.teardown`). */
|
|
191
191
|
teardown(fn: HookFn): TestHandle;
|
|
192
|
-
/** Pin the test: when any test is pinned, only pinned tests run (
|
|
192
|
+
/** Pin the test: when any test is pinned, only pinned tests run (`test.pin`). */
|
|
193
193
|
pin(): TestHandle;
|
|
194
194
|
/**
|
|
195
195
|
* Skip the test, optionally only when `condition` (a boolean OR a function
|
|
196
|
-
* returning one — which may be async
|
|
196
|
+
* returning one — which may be async) is true, with a `reason`.
|
|
197
197
|
* A function condition is evaluated at RUN time, not at collection.
|
|
198
198
|
*/
|
|
199
199
|
skip(condition?: boolean | (() => boolean | Promise<boolean>), reason?: string): TestHandle;
|
|
200
|
-
/** Complete only once the body calls its `done` callback (
|
|
200
|
+
/** Complete only once the body calls its `done` callback (`waitForDone`). */
|
|
201
201
|
waitForDone(): TestHandle;
|
|
202
202
|
/**
|
|
203
|
-
* Attach a dataset
|
|
203
|
+
* Attach a dataset. Two forms:
|
|
204
204
|
* - `test('title', (ctx, row) => …).with([...])` — the body from `test()`
|
|
205
205
|
* is re-homed and runs once per row (row typed as the 2nd body arg).
|
|
206
206
|
* - `test('title').with([...]).run((ctx, row) => …)` — the fully-typed
|
|
@@ -213,7 +213,7 @@ export interface TestHandle {
|
|
|
213
213
|
}
|
|
214
214
|
/**
|
|
215
215
|
* The handle returned by `test(...).with(rows)` — carries the dataset element
|
|
216
|
-
* type so `.run((ctx, row) => …)` types `row` precisely
|
|
216
|
+
* type so `.run((ctx, row) => …)` types `row` precisely.
|
|
217
217
|
*/
|
|
218
218
|
export interface DatasetHandle<Row> {
|
|
219
219
|
/**
|
|
@@ -235,12 +235,12 @@ export interface SuiteNode {
|
|
|
235
235
|
eachTimeout?: number;
|
|
236
236
|
/** Default per-test retries for tests in this group — `group.each.retry(n)`. */
|
|
237
237
|
eachRetries?: number;
|
|
238
|
-
/** Opened via `test.group()` (vs `describe`) —
|
|
238
|
+
/** Opened via `test.group()` (vs `describe`) — helix forbids nesting these. */
|
|
239
239
|
isGroup?: boolean;
|
|
240
240
|
/**
|
|
241
241
|
* The single {@link Group} instance built by `test.group()` for this node —
|
|
242
242
|
* the body handle, the value returned, AND the `self` its hooks receive
|
|
243
|
-
* (
|
|
243
|
+
* (`self === group`). Absent on plain `describe` suites.
|
|
244
244
|
*/
|
|
245
245
|
groupInstance?: Group;
|
|
246
246
|
}
|
|
@@ -289,12 +289,12 @@ type EachRow = ArrayRow | ObjectRow | null | undefined | string | number | boole
|
|
|
289
289
|
type EachRows<Row extends EachRow> = readonly Row[] | (() => readonly Row[]);
|
|
290
290
|
/**
|
|
291
291
|
* Source of dataset rows (`test(name, fn).with(...)`): a static array OR a
|
|
292
|
-
* function returning one — the function may be async
|
|
292
|
+
* function returning one — the function may be async. Resolved at
|
|
293
293
|
* RUN time so async sources work.
|
|
294
294
|
*/
|
|
295
295
|
export type DatasetSource<Row> = readonly Row[] | (() => readonly Row[] | Promise<readonly Row[]>);
|
|
296
296
|
/**
|
|
297
|
-
* The `group` handle passed to `test.group(name, (group) => …)
|
|
297
|
+
* The `group` handle passed to `test.group(name, (group) => …)`.
|
|
298
298
|
* `setup`/`teardown` run once for the whole group; `each.setup`/`each.teardown`
|
|
299
299
|
* run around every test in it. Hook bodies may return a cleanup function.
|
|
300
300
|
*/
|
|
@@ -319,13 +319,13 @@ export interface Group extends GroupInstance {
|
|
|
319
319
|
* `group.tap(t => { t.options.title = t.options.title.toUpperCase() })`.
|
|
320
320
|
* Applied to all tests registered in the group body. The callback receives a
|
|
321
321
|
* {@link TapHandle}: the chainable modifiers PLUS a mutable `options` view
|
|
322
|
-
* (
|
|
322
|
+
* (`test.options.title`).
|
|
323
323
|
*/
|
|
324
324
|
tap(fn: (test: TapHandle) => void): void;
|
|
325
325
|
}
|
|
326
|
-
/** The mutable, resolved options of a test, exposed to `group.tap
|
|
326
|
+
/** The mutable, resolved options of a test, exposed to `group.tap`. */
|
|
327
327
|
export interface TapOptions {
|
|
328
|
-
/** The test's title — assignable to rename it (
|
|
328
|
+
/** The test's title — assignable to rename it (`test.options.title`). */
|
|
329
329
|
title: string;
|
|
330
330
|
/** The test's tags — assignable to replace them. */
|
|
331
331
|
tags: string[];
|
|
@@ -336,7 +336,7 @@ export interface TapOptions {
|
|
|
336
336
|
}
|
|
337
337
|
/**
|
|
338
338
|
* The handle passed to `group.tap` — a {@link TestHandle} (chainable modifiers)
|
|
339
|
-
* augmented with a mutable {@link TapOptions} view, matching
|
|
339
|
+
* augmented with a mutable {@link TapOptions} view, matching helix's `test`
|
|
340
340
|
* instance whose `options` are directly assignable.
|
|
341
341
|
*/
|
|
342
342
|
export interface TapHandle extends TestHandle {
|
|
@@ -344,7 +344,7 @@ export interface TapHandle extends TestHandle {
|
|
|
344
344
|
}
|
|
345
345
|
type TestApi = {
|
|
346
346
|
/**
|
|
347
|
-
* Register a test. Omitting `fn` marks it `todo`
|
|
347
|
+
* Register a test. Omitting `fn` marks it `todo` — reported as
|
|
348
348
|
* pending and never executed — unless a dataset body is supplied later via
|
|
349
349
|
* `.with(...).run(fn)`.
|
|
350
350
|
*/
|
|
@@ -354,13 +354,13 @@ type TestApi = {
|
|
|
354
354
|
todo(name: string): void;
|
|
355
355
|
each<Row extends EachRow>(rows: EachRows<Row>): (name: string, fn: (row: Row) => void | Promise<void>) => void;
|
|
356
356
|
/**
|
|
357
|
-
*
|
|
357
|
+
* helix-style grouping: `test.group(name, (group) => { … })`. Returns the
|
|
358
358
|
* {@link Group} — the SAME instance passed to the body and to the group's
|
|
359
|
-
* hooks as `self` (
|
|
359
|
+
* hooks as `self` (helix's current release returns the group; `self === group`).
|
|
360
360
|
*/
|
|
361
361
|
group(name: string, fn: (group: Group) => void): Group;
|
|
362
362
|
/**
|
|
363
|
-
* Create a resource macro (
|
|
363
|
+
* Create a resource macro (`test.macro`). The callback receives the
|
|
364
364
|
* running test instance `t` (carrying `t.cleanup`) followed by any arguments;
|
|
365
365
|
* `macro` returns a function that, called inside a test body, invokes the
|
|
366
366
|
* callback against the active test and returns its value:
|
|
@@ -376,17 +376,17 @@ type TestApi = {
|
|
|
376
376
|
macro<Args extends unknown[], R>(callback: (test: TestInstance, ...args: Args) => R): (...args: Args) => R;
|
|
377
377
|
};
|
|
378
378
|
/**
|
|
379
|
-
* Interpolate a dataset test title
|
|
379
|
+
* Interpolate a dataset test title. Tokens:
|
|
380
380
|
* - `{$i}` → the 1-based row index
|
|
381
381
|
* - `{$self}`→ the row itself (stringified) — for primitive/array rows
|
|
382
382
|
* - `{prop}` / `{a.b}` → a (dotted) property lookup on an object row
|
|
383
383
|
* Unknown `{tokens}` are left verbatim. A template with no token at all is
|
|
384
|
-
* returned unchanged and therefore repeats for every row —
|
|
384
|
+
* returned unchanged and therefore repeats for every row — helix's behaviour,
|
|
385
385
|
* and what the golden dataset spec pins down.
|
|
386
386
|
*/
|
|
387
387
|
export declare function interpolateDatasetTitle(template: string, row: unknown, index: number): string;
|
|
388
388
|
/**
|
|
389
|
-
* Class-level extension surface (
|
|
389
|
+
* Class-level extension surface (`Test.macro`). Registers a named method
|
|
390
390
|
* available on every test handle; `this` inside it is the handle, so it can
|
|
391
391
|
* chain (`Test.macro('slow', function () { this.tags(['@slow']); return this })`).
|
|
392
392
|
* Pair with a `declare module` augmentation for the types.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"suite.d.ts","sourceRoot":"","sources":["../../src/runtime/suite.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAgB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"suite.d.ts","sourceRoot":"","sources":["../../src/runtime/suite.ts"],"names":[],"mappings":"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"}
|