@vitest/runner 0.31.1 → 0.31.3
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/dist/chunk-tasks.js +5 -2
- package/dist/index.d.ts +4 -4
- package/dist/index.js +29 -12
- package/dist/{runner-a2cd0770.d.ts → runner-6af7d148.d.ts} +2 -2
- package/dist/{tasks-891047e7.d.ts → tasks-900f5000.d.ts} +16 -7
- package/dist/types.d.ts +2 -2
- package/dist/utils.d.ts +2 -2
- package/package.json +2 -2
package/dist/chunk-tasks.js
CHANGED
@@ -90,8 +90,8 @@ function processError(err, options = {}) {
|
|
90
90
|
err.stackStr = String(err.stack);
|
91
91
|
if (err.name)
|
92
92
|
err.nameStr = String(err.name);
|
93
|
-
const clonedActual = deepClone(err.actual);
|
94
|
-
const clonedExpected = deepClone(err.expected);
|
93
|
+
const clonedActual = deepClone(err.actual, { forceWritable: true });
|
94
|
+
const clonedExpected = deepClone(err.expected, { forceWritable: true });
|
95
95
|
const { replacedActual, replacedExpected } = replaceAsymmetricMatcher(clonedActual, clonedExpected);
|
96
96
|
if (err.showDiff || err.showDiff === void 0 && err.expected !== void 0 && err.actual !== void 0)
|
97
97
|
err.diff = unifiedDiff(replacedActual, replacedExpected, options);
|
@@ -238,6 +238,9 @@ function createChainable(keys, fn) {
|
|
238
238
|
};
|
239
239
|
Object.assign(chain2, fn);
|
240
240
|
chain2.withContext = () => chain2.bind(context);
|
241
|
+
chain2.setContext = (key, value) => {
|
242
|
+
context[key] = value;
|
243
|
+
};
|
241
244
|
for (const key of keys) {
|
242
245
|
Object.defineProperty(chain2, key, {
|
243
246
|
get() {
|
package/dist/index.d.ts
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
import { V as VitestRunner } from './runner-
|
2
|
-
export { C as CancelReason, a as VitestRunnerConfig, c as VitestRunnerConstructor, b as VitestRunnerImportSource } from './runner-
|
3
|
-
import { T as Task, F as File, S as SuiteAPI, a as TestAPI, b as SuiteCollector, c as SuiteHooks, O as OnTestFailedHandler, d as Test } from './tasks-
|
4
|
-
export { D as DoneCallback,
|
1
|
+
import { V as VitestRunner } from './runner-6af7d148.js';
|
2
|
+
export { C as CancelReason, a as VitestRunnerConfig, c as VitestRunnerConstructor, b as VitestRunnerImportSource } from './runner-6af7d148.js';
|
3
|
+
import { T as Task, F as File, S as SuiteAPI, a as TestAPI, b as SuiteCollector, c as SuiteHooks, O as OnTestFailedHandler, d as Test } from './tasks-900f5000.js';
|
4
|
+
export { D as DoneCallback, n as HookCleanupCallback, H as HookListener, R as RunMode, p as RuntimeContext, r as SequenceHooks, s as SequenceSetupFiles, k as Suite, o as SuiteFactory, f as TaskBase, h as TaskCustom, g as TaskMeta, i as TaskResult, j as TaskResultPack, e as TaskState, q as TestContext, l as TestFunction, m as TestOptions } from './tasks-900f5000.js';
|
5
5
|
import { Awaitable } from '@vitest/utils';
|
6
6
|
|
7
7
|
declare function updateTask(task: Task, runner: VitestRunner): void;
|
package/dist/index.js
CHANGED
@@ -54,6 +54,7 @@ function createTestContext(test, runner) {
|
|
54
54
|
throw new Error("done() callback is deprecated, use promise instead");
|
55
55
|
};
|
56
56
|
context.meta = test;
|
57
|
+
context.task = test;
|
57
58
|
context.onTestFailed = (fn) => {
|
58
59
|
test.onFailed || (test.onFailed = []);
|
59
60
|
test.onFailed.push(fn);
|
@@ -65,7 +66,7 @@ function makeTimeoutMsg(isHook, timeout) {
|
|
65
66
|
If this is a long-running ${isHook ? "hook" : "test"}, pass a timeout value as the last argument or configure it globally with "${isHook ? "hookTimeout" : "testTimeout"}".`;
|
66
67
|
}
|
67
68
|
|
68
|
-
var version = "0.31.
|
69
|
+
var version = "0.31.3";
|
69
70
|
|
70
71
|
function getVersion() {
|
71
72
|
return globalThis.__vitest_runner_version__ || version;
|
@@ -121,7 +122,7 @@ function createSuiteHooks() {
|
|
121
122
|
};
|
122
123
|
}
|
123
124
|
function createSuiteCollector(name, factory = () => {
|
124
|
-
}, mode, concurrent, shuffle, suiteOptions) {
|
125
|
+
}, mode, concurrent, shuffle, each, suiteOptions) {
|
125
126
|
const tasks = [];
|
126
127
|
const factoryQueue = [];
|
127
128
|
let suite2;
|
@@ -134,6 +135,7 @@ function createSuiteCollector(name, factory = () => {
|
|
134
135
|
options = {
|
135
136
|
repeats: suiteOptions.repeats,
|
136
137
|
retry: suiteOptions.retry,
|
138
|
+
timeout: suiteOptions.timeout,
|
137
139
|
...options
|
138
140
|
};
|
139
141
|
}
|
@@ -141,11 +143,13 @@ function createSuiteCollector(name, factory = () => {
|
|
141
143
|
id: "",
|
142
144
|
type: "test",
|
143
145
|
name: name2,
|
146
|
+
each: this.each,
|
144
147
|
mode: mode2,
|
145
148
|
suite: void 0,
|
146
149
|
fails: this.fails,
|
147
150
|
retry: options == null ? void 0 : options.retry,
|
148
|
-
repeats: options == null ? void 0 : options.repeats
|
151
|
+
repeats: options == null ? void 0 : options.repeats,
|
152
|
+
meta: /* @__PURE__ */ Object.create(null)
|
149
153
|
};
|
150
154
|
if (this.concurrent || concurrent)
|
151
155
|
test3.concurrent = true;
|
@@ -168,7 +172,8 @@ function createSuiteCollector(name, factory = () => {
|
|
168
172
|
id: "",
|
169
173
|
name: name2,
|
170
174
|
type: "custom",
|
171
|
-
mode: self.only ? "only" : self.skip ? "skip" : self.todo ? "todo" : "run"
|
175
|
+
mode: self.only ? "only" : self.skip ? "skip" : self.todo ? "todo" : "run",
|
176
|
+
meta: /* @__PURE__ */ Object.create(null)
|
172
177
|
};
|
173
178
|
tasks.push(task);
|
174
179
|
return task;
|
@@ -196,8 +201,10 @@ function createSuiteCollector(name, factory = () => {
|
|
196
201
|
type: "suite",
|
197
202
|
name,
|
198
203
|
mode,
|
204
|
+
each,
|
199
205
|
shuffle,
|
200
|
-
tasks: []
|
206
|
+
tasks: [],
|
207
|
+
meta: /* @__PURE__ */ Object.create(null)
|
201
208
|
};
|
202
209
|
setHooks(suite2, createSuiteHooks());
|
203
210
|
}
|
@@ -227,19 +234,18 @@ function createSuiteCollector(name, factory = () => {
|
|
227
234
|
}
|
228
235
|
function createSuite() {
|
229
236
|
function suiteFn(name, factory, options) {
|
230
|
-
var _a;
|
231
237
|
checkVersion();
|
232
238
|
const mode = this.only ? "only" : this.skip ? "skip" : this.todo ? "todo" : "run";
|
233
239
|
const currentSuite = getCurrentSuite();
|
234
240
|
if (typeof options === "number")
|
235
241
|
options = { timeout: options };
|
236
|
-
if (currentSuite
|
237
|
-
options = {
|
238
|
-
|
239
|
-
return createSuiteCollector(name, factory, mode, this.concurrent, this.shuffle, options);
|
242
|
+
if (currentSuite == null ? void 0 : currentSuite.options)
|
243
|
+
options = { ...currentSuite.options, ...options };
|
244
|
+
return createSuiteCollector(name, factory, mode, this.concurrent, this.shuffle, this.each, options);
|
240
245
|
}
|
241
246
|
suiteFn.each = function(cases, ...args) {
|
242
247
|
const suite2 = this.withContext();
|
248
|
+
this.setContext("each", true);
|
243
249
|
if (Array.isArray(cases) && args.length)
|
244
250
|
cases = formatTemplateString(cases, args);
|
245
251
|
return (name, fn, options) => {
|
@@ -248,6 +254,7 @@ function createSuite() {
|
|
248
254
|
const items = Array.isArray(i) ? i : [i];
|
249
255
|
arrayOnlyCases ? suite2(formatTitle(name, items, idx), () => fn(...items), options) : suite2(formatTitle(name, items, idx), () => fn(i), options);
|
250
256
|
});
|
257
|
+
this.setContext("each", void 0);
|
251
258
|
};
|
252
259
|
};
|
253
260
|
suiteFn.skipIf = (condition) => condition ? suite.skip : suite;
|
@@ -261,6 +268,7 @@ function createTest(fn) {
|
|
261
268
|
const testFn = fn;
|
262
269
|
testFn.each = function(cases, ...args) {
|
263
270
|
const test2 = this.withContext();
|
271
|
+
this.setContext("each", true);
|
264
272
|
if (Array.isArray(cases) && args.length)
|
265
273
|
cases = formatTemplateString(cases, args);
|
266
274
|
return (name, fn2, options) => {
|
@@ -269,6 +277,7 @@ function createTest(fn) {
|
|
269
277
|
const items = Array.isArray(i) ? i : [i];
|
270
278
|
arrayOnlyCases ? test2(formatTitle(name, items, idx), () => fn2(...items), options) : test2(formatTitle(name, items, idx), () => fn2(i), options);
|
271
279
|
});
|
280
|
+
this.setContext("each", void 0);
|
272
281
|
};
|
273
282
|
};
|
274
283
|
testFn.skipIf = (condition) => condition ? test.skip : test;
|
@@ -335,6 +344,7 @@ async function collectTests(paths, runner) {
|
|
335
344
|
mode: "run",
|
336
345
|
filepath,
|
337
346
|
tasks: [],
|
347
|
+
meta: /* @__PURE__ */ Object.create(null),
|
338
348
|
projectName: config.name
|
339
349
|
};
|
340
350
|
clearCollectorContext(runner);
|
@@ -431,7 +441,7 @@ const packs = /* @__PURE__ */ new Map();
|
|
431
441
|
let updateTimer;
|
432
442
|
let previousUpdate;
|
433
443
|
function updateTask(task, runner) {
|
434
|
-
packs.set(task.id, task.result);
|
444
|
+
packs.set(task.id, [task.result, task.meta]);
|
435
445
|
const { clearTimeout, setTimeout } = getSafeTimers();
|
436
446
|
clearTimeout(updateTimer);
|
437
447
|
updateTimer = setTimeout(() => {
|
@@ -444,7 +454,14 @@ async function sendTasksUpdate(runner) {
|
|
444
454
|
clearTimeout(updateTimer);
|
445
455
|
await previousUpdate;
|
446
456
|
if (packs.size) {
|
447
|
-
const
|
457
|
+
const taskPacks = Array.from(packs).map(([id, task]) => {
|
458
|
+
return [
|
459
|
+
id,
|
460
|
+
task[0],
|
461
|
+
task[1]
|
462
|
+
];
|
463
|
+
});
|
464
|
+
const p = (_a = runner.onTaskUpdate) == null ? void 0 : _a.call(runner, taskPacks);
|
448
465
|
packs.clear();
|
449
466
|
return p;
|
450
467
|
}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import {
|
1
|
+
import { r as SequenceHooks, s as SequenceSetupFiles, F as File, d as Test, k as Suite, j as TaskResultPack, q as TestContext } from './tasks-900f5000.js';
|
2
2
|
|
3
3
|
interface VitestRunnerConfig {
|
4
4
|
root: string;
|
@@ -83,7 +83,7 @@ interface VitestRunner {
|
|
83
83
|
/**
|
84
84
|
* Called, when a task is updated. The same as "onTaskUpdate" in a reporter, but this is running in the same thread as tests.
|
85
85
|
*/
|
86
|
-
onTaskUpdate?(task: [
|
86
|
+
onTaskUpdate?(task: TaskResultPack[]): Promise<void>;
|
87
87
|
/**
|
88
88
|
* Called before running all tests in collected paths.
|
89
89
|
*/
|
@@ -15,15 +15,18 @@ interface TaskBase {
|
|
15
15
|
id: string;
|
16
16
|
name: string;
|
17
17
|
mode: RunMode;
|
18
|
+
meta: TaskMeta;
|
19
|
+
each?: boolean;
|
18
20
|
concurrent?: boolean;
|
19
21
|
shuffle?: boolean;
|
20
22
|
suite?: Suite;
|
21
23
|
file?: File;
|
22
24
|
result?: TaskResult;
|
23
25
|
retry?: number;
|
24
|
-
meta?: any;
|
25
26
|
repeats?: number;
|
26
27
|
}
|
28
|
+
interface TaskMeta {
|
29
|
+
}
|
27
30
|
interface TaskCustom extends TaskBase {
|
28
31
|
type: 'custom';
|
29
32
|
}
|
@@ -42,7 +45,7 @@ interface TaskResult {
|
|
42
45
|
retryCount?: number;
|
43
46
|
repeatCount?: number;
|
44
47
|
}
|
45
|
-
type TaskResultPack = [id: string, result: TaskResult | undefined];
|
48
|
+
type TaskResultPack = [id: string, result: TaskResult | undefined, meta: TaskMeta];
|
46
49
|
interface Suite extends TaskBase {
|
47
50
|
type: 'suite';
|
48
51
|
tasks: Task[];
|
@@ -143,10 +146,10 @@ type SuiteAPI<ExtraContext = {}> = ChainableSuiteAPI<ExtraContext> & {
|
|
143
146
|
type HookListener<T extends any[], Return = void> = (...args: T) => Awaitable<Return>;
|
144
147
|
type HookCleanupCallback = (() => Awaitable<unknown>) | void;
|
145
148
|
interface SuiteHooks<ExtraContext = {}> {
|
146
|
-
beforeAll: HookListener<[Suite | File], HookCleanupCallback>[];
|
147
|
-
afterAll: HookListener<[Suite | File]>[];
|
148
|
-
beforeEach: HookListener<[TestContext & ExtraContext, Suite], HookCleanupCallback>[];
|
149
|
-
afterEach: HookListener<[TestContext & ExtraContext, Suite]>[];
|
149
|
+
beforeAll: HookListener<[Readonly<Suite | File>], HookCleanupCallback>[];
|
150
|
+
afterAll: HookListener<[Readonly<Suite | File>]>[];
|
151
|
+
beforeEach: HookListener<[TestContext & ExtraContext, Readonly<Suite>], HookCleanupCallback>[];
|
152
|
+
afterEach: HookListener<[TestContext & ExtraContext, Readonly<Suite>]>[];
|
150
153
|
}
|
151
154
|
interface SuiteCollector<ExtraContext = {}> {
|
152
155
|
readonly name: string;
|
@@ -168,8 +171,14 @@ interface RuntimeContext {
|
|
168
171
|
interface TestContext {
|
169
172
|
/**
|
170
173
|
* Metadata of the current test
|
174
|
+
*
|
175
|
+
* @deprecated Use `task` instead
|
171
176
|
*/
|
172
177
|
meta: Readonly<Test>;
|
178
|
+
/**
|
179
|
+
* Metadata of the current test
|
180
|
+
*/
|
181
|
+
task: Readonly<Test>;
|
173
182
|
/**
|
174
183
|
* Extract hooks on test failed
|
175
184
|
*/
|
@@ -179,4 +188,4 @@ type OnTestFailedHandler = (result: TaskResult) => Awaitable<void>;
|
|
179
188
|
type SequenceHooks = 'stack' | 'list' | 'parallel';
|
180
189
|
type SequenceSetupFiles = 'list' | 'parallel';
|
181
190
|
|
182
|
-
export { ChainableFunction as C, DoneCallback as D, File as F, HookListener as H, OnTestFailedHandler as O, RunMode as R, SuiteAPI as S, Task as T, TestAPI as a, SuiteCollector as b, SuiteHooks as c, Test as d, TaskState as e, TaskBase as f,
|
191
|
+
export { ChainableFunction as C, DoneCallback as D, File as F, HookListener as H, OnTestFailedHandler as O, RunMode as R, SuiteAPI as S, Task as T, TestAPI as a, SuiteCollector as b, SuiteHooks as c, Test as d, TaskState as e, TaskBase as f, TaskMeta as g, TaskCustom as h, TaskResult as i, TaskResultPack as j, Suite as k, TestFunction as l, TestOptions as m, HookCleanupCallback as n, SuiteFactory as o, RuntimeContext as p, TestContext as q, SequenceHooks as r, SequenceSetupFiles as s, createChainable as t };
|
package/dist/types.d.ts
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
export { D as DoneCallback, F as File,
|
2
|
-
export { C as CancelReason, V as VitestRunner, a as VitestRunnerConfig, c as VitestRunnerConstructor, b as VitestRunnerImportSource } from './runner-
|
1
|
+
export { D as DoneCallback, F as File, n as HookCleanupCallback, H as HookListener, O as OnTestFailedHandler, R as RunMode, p as RuntimeContext, r as SequenceHooks, s as SequenceSetupFiles, k as Suite, S as SuiteAPI, b as SuiteCollector, o as SuiteFactory, c as SuiteHooks, T as Task, f as TaskBase, h as TaskCustom, g as TaskMeta, i as TaskResult, j as TaskResultPack, e as TaskState, d as Test, a as TestAPI, q as TestContext, l as TestFunction, m as TestOptions } from './tasks-900f5000.js';
|
2
|
+
export { C as CancelReason, V as VitestRunner, a as VitestRunnerConfig, c as VitestRunnerConstructor, b as VitestRunnerImportSource } from './runner-6af7d148.js';
|
3
3
|
import '@vitest/utils';
|
package/dist/utils.d.ts
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
import {
|
2
|
-
export { C as ChainableFunction,
|
1
|
+
import { k as Suite, T as Task, d as Test, h as TaskCustom } from './tasks-900f5000.js';
|
2
|
+
export { C as ChainableFunction, t as createChainable } from './tasks-900f5000.js';
|
3
3
|
import { Arrayable } from '@vitest/utils';
|
4
4
|
export { ErrorWithDiff, ParsedStack } from '@vitest/utils';
|
5
5
|
import { DiffOptions } from '@vitest/utils/diff';
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@vitest/runner",
|
3
3
|
"type": "module",
|
4
|
-
"version": "0.31.
|
4
|
+
"version": "0.31.3",
|
5
5
|
"description": "Vitest test runner",
|
6
6
|
"license": "MIT",
|
7
7
|
"funding": "https://opencollective.com/vitest",
|
@@ -41,7 +41,7 @@
|
|
41
41
|
"concordance": "^5.0.4",
|
42
42
|
"p-limit": "^4.0.0",
|
43
43
|
"pathe": "^1.1.0",
|
44
|
-
"@vitest/utils": "0.31.
|
44
|
+
"@vitest/utils": "0.31.3"
|
45
45
|
},
|
46
46
|
"scripts": {
|
47
47
|
"build": "rimraf dist && rollup -c",
|