vitest 4.0.0-beta.5 → 4.0.0-beta.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/LICENSE.md +1 -1
  2. package/dist/browser.d.ts +3 -3
  3. package/dist/browser.js +2 -2
  4. package/dist/chunks/{base.DMfOuRWD.js → base.BXI97p6t.js} +7 -16
  5. package/dist/chunks/{benchmark.CtuRzf-i.js → benchmark.UW6Ezvxy.js} +4 -9
  6. package/dist/chunks/{browser.d.Cawq_X_N.d.ts → browser.d.DOMmqJQx.d.ts} +1 -1
  7. package/dist/chunks/{cac.CKnbxhn2.js → cac.Dsn7ixFt.js} +38 -113
  8. package/dist/chunks/{cli-api.COn58yrl.js → cli-api.DfGJyldU.js} +829 -1232
  9. package/dist/chunks/{config.d.CKNVOKm0.d.ts → config.d._GBBbReY.d.ts} +1 -0
  10. package/dist/chunks/{console.Duv2dVIC.js → console.B0quX7yH.js} +32 -68
  11. package/dist/chunks/{coverage.B6cReEn1.js → coverage.Dvxug1RM.js} +210 -579
  12. package/dist/chunks/{creator.DUVZ6rfm.js → creator.KEg6n5IC.js} +28 -74
  13. package/dist/chunks/{date.Bq6ZW5rf.js → date.-jtEtIeV.js} +6 -17
  14. package/dist/chunks/{git.BVQ8w_Sw.js → git.BFNcloKD.js} +1 -2
  15. package/dist/chunks/{globals.CJQ63oO0.js → globals.lgsmH00r.js} +5 -5
  16. package/dist/chunks/{index.QZr3S3vQ.js → index.AR8aAkCC.js} +2 -2
  17. package/dist/chunks/{index.DQhAfQQU.js → index.C3EbxYwt.js} +276 -607
  18. package/dist/chunks/{index.oWRWx-nj.js → index.CsFXYRkW.js} +17 -36
  19. package/dist/chunks/{index.DgN0Zk9a.js → index.D2B6d2vv.js} +14 -24
  20. package/dist/chunks/{index.BRtIe7r8.js → index.DfviD7lX.js} +55 -110
  21. package/dist/chunks/{inspector.C914Efll.js → inspector.CvQD-Nie.js} +10 -25
  22. package/dist/chunks/{moduleRunner.d.mmOmOGrW.d.ts → moduleRunner.d.CX4DuqOx.d.ts} +2 -2
  23. package/dist/chunks/{node.4JV5OXkt.js → node.BOqcT2jW.js} +1 -1
  24. package/dist/chunks/{plugin.d.CvOlgjxK.d.ts → plugin.d.vcD4xbMS.d.ts} +1 -1
  25. package/dist/chunks/{reporters.d.CYE9sT5z.d.ts → reporters.d.BC86JJdB.d.ts} +799 -758
  26. package/dist/chunks/{resolver.D5bG4zy5.js → resolver.Bx6lE0iq.js} +21 -64
  27. package/dist/chunks/{rpc.DGoW_Vl-.js → rpc.RpPylpp0.js} +7 -21
  28. package/dist/chunks/{runBaseTests.B3KcKqlF.js → runBaseTests.D6sfuWBM.js} +25 -54
  29. package/dist/chunks/{setup-common.lgPs-bYv.js → setup-common.hLGRxhC8.js} +9 -22
  30. package/dist/chunks/{startModuleRunner.C8FtT_BY.js → startModuleRunner.C8TW8zTN.js} +83 -205
  31. package/dist/chunks/{typechecker.BgoW4nTA.js → typechecker.DSo_maXz.js} +97 -209
  32. package/dist/chunks/{utils.CcGm2cd1.js → utils.C2YI6McM.js} +4 -13
  33. package/dist/chunks/{utils.B9FY3b73.js → utils.C7__0Iv5.js} +5 -14
  34. package/dist/chunks/{vi.DGAfBY4R.js → vi.BfdOiD4j.js} +110 -267
  35. package/dist/chunks/{vm.BKfKvaKl.js → vm.BHBje7cC.js} +73 -177
  36. package/dist/chunks/{worker.d.Db-UVmXc.d.ts → worker.d.BKu8cnnX.d.ts} +1 -1
  37. package/dist/chunks/{worker.d.D9QWnzAe.d.ts → worker.d.DYlqbejz.d.ts} +1 -1
  38. package/dist/cli.js +3 -3
  39. package/dist/config.d.ts +7 -7
  40. package/dist/coverage.d.ts +4 -4
  41. package/dist/coverage.js +2 -2
  42. package/dist/environments.js +1 -1
  43. package/dist/index.d.ts +6 -6
  44. package/dist/index.js +5 -5
  45. package/dist/module-evaluator.d.ts +3 -3
  46. package/dist/module-evaluator.js +33 -84
  47. package/dist/module-runner.js +2 -2
  48. package/dist/node.d.ts +11 -9
  49. package/dist/node.js +16 -27
  50. package/dist/reporters.d.ts +5 -5
  51. package/dist/reporters.js +3 -3
  52. package/dist/runners.d.ts +1 -1
  53. package/dist/runners.js +23 -51
  54. package/dist/snapshot.js +2 -2
  55. package/dist/suite.js +2 -2
  56. package/dist/worker.js +18 -34
  57. package/dist/workers/forks.js +4 -4
  58. package/dist/workers/runVmTests.js +19 -37
  59. package/dist/workers/threads.js +4 -4
  60. package/dist/workers/vmForks.js +7 -7
  61. package/dist/workers/vmThreads.js +7 -7
  62. package/dist/workers.d.ts +3 -3
  63. package/dist/workers.js +11 -11
  64. package/package.json +11 -11
@@ -187,6 +187,7 @@ interface SerializedConfig {
187
187
  // for playwright
188
188
  actionTimeout?: number;
189
189
  };
190
+ trackUnhandledErrors: boolean;
190
191
  };
191
192
  standalone: boolean;
192
193
  logHeapUsage: boolean | undefined;
@@ -3,48 +3,35 @@ import { relative } from 'node:path';
3
3
  import { Writable } from 'node:stream';
4
4
  import { getSafeTimers } from '@vitest/utils';
5
5
  import c from 'tinyrainbow';
6
- import { R as RealDate } from './date.Bq6ZW5rf.js';
7
- import { g as getWorkerState } from './utils.B9FY3b73.js';
6
+ import { R as RealDate } from './date.-jtEtIeV.js';
7
+ import { g as getWorkerState } from './utils.C7__0Iv5.js';
8
8
 
9
9
  const UNKNOWN_TEST_ID = "__vitest__unknown_test__";
10
10
  function getTaskIdByStack(root) {
11
11
  const stack = (/* @__PURE__ */ new Error("STACK_TRACE_ERROR")).stack?.split("\n");
12
12
  if (!stack) return UNKNOWN_TEST_ID;
13
- const index = stack.findIndex((line) => line.includes("at Console.value"));
14
- const line = index === -1 ? null : stack[index + 2];
13
+ const index = stack.findIndex((line) => line.includes("at Console.value")), line = index === -1 ? null : stack[index + 2];
15
14
  if (!line) return UNKNOWN_TEST_ID;
16
15
  const filepath = line.match(/at\s(.*)\s?/)?.[1];
17
- if (filepath) return relative(root, filepath);
18
- return UNKNOWN_TEST_ID;
16
+ return filepath ? relative(root, filepath) : UNKNOWN_TEST_ID;
19
17
  }
20
18
  function createCustomConsole(defaultState) {
21
- const stdoutBuffer = /* @__PURE__ */ new Map();
22
- const stderrBuffer = /* @__PURE__ */ new Map();
23
- const timers = /* @__PURE__ */ new Map();
24
- const { queueMicrotask } = getSafeTimers();
19
+ const stdoutBuffer = /* @__PURE__ */ new Map(), stderrBuffer = /* @__PURE__ */ new Map(), timers = /* @__PURE__ */ new Map(), { queueMicrotask } = getSafeTimers();
25
20
  function queueCancelableMicrotask(callback) {
26
21
  let canceled = false;
27
- queueMicrotask(() => {
22
+ return queueMicrotask(() => {
28
23
  if (!canceled) callback();
29
- });
30
- return () => {
24
+ }), () => {
31
25
  canceled = true;
32
26
  };
33
27
  }
34
28
  const state = () => defaultState || getWorkerState();
35
29
  // group sync console.log calls with micro task
36
30
  function schedule(taskId) {
37
- const timer = timers.get(taskId);
38
- const { stdoutTime, stderrTime } = timer;
39
- timer.cancel?.();
40
- timer.cancel = queueCancelableMicrotask(() => {
41
- if (stderrTime < stdoutTime) {
42
- sendStderr(taskId);
43
- sendStdout(taskId);
44
- } else {
45
- sendStdout(taskId);
46
- sendStderr(taskId);
47
- }
31
+ const timer = timers.get(taskId), { stdoutTime, stderrTime } = timer;
32
+ timer.cancel?.(), timer.cancel = queueCancelableMicrotask(() => {
33
+ if (stderrTime < stdoutTime) sendStderr(taskId), sendStdout(taskId);
34
+ else sendStdout(taskId), sendStderr(taskId);
48
35
  });
49
36
  }
50
37
  function sendStdout(taskId) {
@@ -54,8 +41,7 @@ function createCustomConsole(defaultState) {
54
41
  sendBuffer("stderr", taskId);
55
42
  }
56
43
  function sendBuffer(type, taskId) {
57
- const buffers = type === "stdout" ? stdoutBuffer : stderrBuffer;
58
- const buffer = buffers.get(taskId);
44
+ const buffers = type === "stdout" ? stdoutBuffer : stderrBuffer, buffer = buffers.get(taskId);
59
45
  if (!buffer) return;
60
46
  if (state().config.printConsoleTrace) buffer.forEach(([buffer, origin]) => {
61
47
  sendLog(type, taskId, String(buffer), buffer.length, origin);
@@ -65,13 +51,11 @@ function createCustomConsole(defaultState) {
65
51
  sendLog(type, taskId, content, buffer.length);
66
52
  }
67
53
  const timer = timers.get(taskId);
68
- buffers.delete(taskId);
69
- if (type === "stderr") timer.stderrTime = 0;
54
+ if (buffers.delete(taskId), type === "stderr") timer.stderrTime = 0;
70
55
  else timer.stdoutTime = 0;
71
56
  }
72
57
  function sendLog(type, taskId, content, size, origin) {
73
- const timer = timers.get(taskId);
74
- const time = type === "stderr" ? timer.stderrTime : timer.stdoutTime;
58
+ const timer = timers.get(taskId), time = type === "stderr" ? timer.stderrTime : timer.stdoutTime;
75
59
  state().rpc.onUserConsoleLog({
76
60
  type,
77
61
  content: content || "<empty line>",
@@ -82,50 +66,32 @@ function createCustomConsole(defaultState) {
82
66
  });
83
67
  }
84
68
  const stdout = new Writable({ write(data, encoding, callback) {
85
- const s = state();
86
- const id = s?.current?.id || s?.current?.suite?.id || s.current?.file.id || getTaskIdByStack(s.config.root);
69
+ const s = state(), id = s?.current?.id || s?.current?.suite?.id || s.current?.file.id || getTaskIdByStack(s.config.root);
87
70
  let timer = timers.get(id);
88
71
  if (timer) timer.stdoutTime = timer.stdoutTime || RealDate.now();
89
- else {
90
- timer = {
91
- stdoutTime: RealDate.now(),
92
- stderrTime: RealDate.now()
93
- };
94
- timers.set(id, timer);
95
- }
72
+ else timer = {
73
+ stdoutTime: RealDate.now(),
74
+ stderrTime: RealDate.now()
75
+ }, timers.set(id, timer);
96
76
  let buffer = stdoutBuffer.get(id);
97
- if (!buffer) {
98
- buffer = [];
99
- stdoutBuffer.set(id, buffer);
100
- }
77
+ if (!buffer) buffer = [], stdoutBuffer.set(id, buffer);
101
78
  if (state().config.printConsoleTrace) {
102
79
  const limit = Error.stackTraceLimit;
103
80
  Error.stackTraceLimit = limit + 6;
104
- const stack = (/* @__PURE__ */ new Error("STACK_TRACE")).stack;
105
- const trace = stack?.split("\n").slice(7).join("\n");
106
- Error.stackTraceLimit = limit;
107
- buffer.push([data, trace]);
81
+ const stack = (/* @__PURE__ */ new Error("STACK_TRACE")).stack, trace = stack?.split("\n").slice(7).join("\n");
82
+ Error.stackTraceLimit = limit, buffer.push([data, trace]);
108
83
  } else buffer.push([data, void 0]);
109
- schedule(id);
110
- callback();
111
- } });
112
- const stderr = new Writable({ write(data, encoding, callback) {
113
- const s = state();
114
- const id = s?.current?.id || s?.current?.suite?.id || s.current?.file.id || getTaskIdByStack(s.config.root);
84
+ schedule(id), callback();
85
+ } }), stderr = new Writable({ write(data, encoding, callback) {
86
+ const s = state(), id = s?.current?.id || s?.current?.suite?.id || s.current?.file.id || getTaskIdByStack(s.config.root);
115
87
  let timer = timers.get(id);
116
88
  if (timer) timer.stderrTime = timer.stderrTime || RealDate.now();
117
- else {
118
- timer = {
119
- stderrTime: RealDate.now(),
120
- stdoutTime: RealDate.now()
121
- };
122
- timers.set(id, timer);
123
- }
89
+ else timer = {
90
+ stderrTime: RealDate.now(),
91
+ stdoutTime: RealDate.now()
92
+ }, timers.set(id, timer);
124
93
  let buffer = stderrBuffer.get(id);
125
- if (!buffer) {
126
- buffer = [];
127
- stderrBuffer.set(id, buffer);
128
- }
94
+ if (!buffer) buffer = [], stderrBuffer.set(id, buffer);
129
95
  if (state().config.printConsoleTrace) {
130
96
  const limit = Error.stackTraceLimit;
131
97
  Error.stackTraceLimit = limit + 6;
@@ -135,12 +101,10 @@ function createCustomConsole(defaultState) {
135
101
  if (isTrace) buffer.push([data, void 0]);
136
102
  else {
137
103
  const trace = stack?.slice(7).join("\n");
138
- Error.stackTraceLimit = limit;
139
- buffer.push([data, trace]);
104
+ Error.stackTraceLimit = limit, buffer.push([data, trace]);
140
105
  }
141
106
  } else buffer.push([data, void 0]);
142
- schedule(id);
143
- callback();
107
+ schedule(id), callback();
144
108
  } });
145
109
  return new Console({
146
110
  stdout,