vitest 4.0.0 → 4.0.2

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.
@@ -1,10 +1,10 @@
1
1
  import { runInThisContext } from 'node:vm';
2
2
  import * as spyModule from '@vitest/spy';
3
3
  import { V as VitestEvaluatedModules } from './evaluatedModules.Dg1zASAC.js';
4
- import { s as startVitestModuleRunner, c as createNodeImportMeta } from './startModuleRunner.C2tTvmF9.js';
4
+ import { s as startVitestModuleRunner, c as createNodeImportMeta } from './startModuleRunner.iF1E9Bt4.js';
5
5
  import { performance } from 'node:perf_hooks';
6
6
  import { startTests, collectTests } from '@vitest/runner';
7
- import { a as resolveSnapshotEnvironment, s as setupChaiConfig, r as resolveTestRunner } from './resolveSnapshotEnvironment.DJJKMKxb.js';
7
+ import { a as resolveSnapshotEnvironment, s as setupChaiConfig, r as resolveTestRunner } from './resolveSnapshotEnvironment.yzXri_YN.js';
8
8
  import { c as setupCommonEnv, s as startCoverageInsideWorker, a as stopCoverageInsideWorker } from './setup-common.DR1sucx6.js';
9
9
  import { g as globalExpect, v as vi } from './vi.BZvkKVkM.js';
10
10
  import { c as closeInspector } from './inspector.DLZxSeU3.js';
@@ -619,7 +619,7 @@ class CAC extends EventEmitter {
619
619
 
620
620
  const cac = (name = "") => new CAC(name);
621
621
 
622
- var version = "4.0.0";
622
+ var version = "4.0.2";
623
623
 
624
624
  const apiConfig = (port) => ({
625
625
  port: {
@@ -1294,7 +1294,7 @@ function normalizeCliOptions(cliFilters, argv) {
1294
1294
  }
1295
1295
  async function start(mode, cliFilters, options) {
1296
1296
  try {
1297
- const { startVitest } = await import('./cli-api.PwHwIMss.js').then(function (n) { return n.p; }), ctx = await startVitest(mode, cliFilters.map(normalize), normalizeCliOptions(cliFilters, options));
1297
+ const { startVitest } = await import('./cli-api.B5AMMsRQ.js').then(function (n) { return n.p; }), ctx = await startVitest(mode, cliFilters.map(normalize), normalizeCliOptions(cliFilters, options));
1298
1298
  if (!ctx.shouldKeepServer()) await ctx.exit();
1299
1299
  } catch (e) {
1300
1300
  const { errorBanner } = await import('./index.CcRZ6fUh.js').then(function (n) { return n.u; });
@@ -1309,7 +1309,7 @@ async function init(project) {
1309
1309
  }
1310
1310
  async function collect(mode, cliFilters, options) {
1311
1311
  try {
1312
- const { prepareVitest, processCollected, outputFileList } = await import('./cli-api.PwHwIMss.js').then(function (n) { return n.p; }), ctx = await prepareVitest(mode, {
1312
+ const { prepareVitest, processCollected, outputFileList } = await import('./cli-api.B5AMMsRQ.js').then(function (n) { return n.p; }), ctx = await prepareVitest(mode, {
1313
1313
  ...normalizeCliOptions(cliFilters, options),
1314
1314
  watch: false,
1315
1315
  run: true
@@ -11,7 +11,7 @@ import * as nodeos from 'node:os';
11
11
  import nodeos__default, { tmpdir } from 'node:os';
12
12
  import { generateHash as generateHash$1, calculateSuiteHash, someTasksAreOnly, interpretTaskModes, hasFailed, generateFileHash, limitConcurrency, createFileTask as createFileTask$1, getTasks, isTestCase } from '@vitest/runner/utils';
13
13
  import { SnapshotManager } from '@vitest/snapshot/manager';
14
- import { v as version$1 } from './cac.B99MQg-w.js';
14
+ import { v as version$1 } from './cac.BbKNPQvp.js';
15
15
  import { c as createBirpc } from './index.Bgo3tNWt.js';
16
16
  import { p as parse, d as stringify, e as TraceMap, o as originalPositionFor, h as ancestor, i as printError, f as formatProjectName, w as withLabel, j as errorBanner, k as divider, l as Typechecker, m as generateCodeFrame, n as createDefinesScript, R as ReportersMap, B as BlobReporter, r as readBlobs, q as convertTasksToEvents, H as HangingProcessReporter } from './index.CcRZ6fUh.js';
17
17
  import require$$0$3 from 'events';
@@ -30,12 +30,12 @@ import { rootDir, distDir } from '../path.js';
30
30
  import createDebug from 'debug';
31
31
  import { h as hash, R as RandomSequencer, i as isPackageExists, c as isBrowserEnabled, r as resolveConfig, g as getCoverageProvider, a as resolveApiServerConfig } from './coverage.FU3w4IrQ.js';
32
32
  import { readFile, writeFile, rename, stat, unlink, rm, mkdir, copyFile } from 'node:fs/promises';
33
+ import { builtinModules, createRequire, isBuiltin } from 'node:module';
33
34
  import { VitestModuleEvaluator } from '#module-evaluator';
34
35
  import { ModuleRunner } from 'vite/module-runner';
35
36
  import { Console } from 'node:console';
36
37
  import c from 'tinyrainbow';
37
38
  import { highlight } from '@vitest/utils/highlight';
38
- import { createRequire, builtinModules, isBuiltin } from 'node:module';
39
39
  import url, { fileURLToPath, pathToFileURL } from 'node:url';
40
40
  import { i as isTTY, a as isWindows } from './env.D4Lgay0q.js';
41
41
  import { isatty } from 'node:tty';
@@ -5818,13 +5818,16 @@ function normalizeResolvedIdToUrl(environment, resolvedId) {
5818
5818
  return url;
5819
5819
  }
5820
5820
 
5821
+ const nodeBuiltins = builtinModules.filter((id) => !id.includes(":"));
5821
5822
  class ServerModuleRunner extends ModuleRunner {
5822
5823
  constructor(environment, fetcher, config) {
5823
5824
  super({
5824
5825
  hmr: false,
5825
5826
  transport: { async invoke(event) {
5826
5827
  if (event.type !== "custom") throw new Error(`Vitest Module Runner doesn't support Vite HMR events.`);
5827
- const { data } = event.data;
5828
+ const { name, data } = event.data;
5829
+ if (name === "getBuiltins") return { result: [...nodeBuiltins, /^node:/] };
5830
+ if (name !== "fetchModule") return { error: /* @__PURE__ */ new Error(`Unknown method: ${name}. Expected "fetchModule".`) };
5828
5831
  try {
5829
5832
  return { result: await fetcher(data[0], data[1], environment, false, data[2]) };
5830
5833
  } catch (error) {
@@ -6776,7 +6779,10 @@ class VmForksPoolWorker extends ForksPoolWorker {
6776
6779
  entrypoint;
6777
6780
  constructor(options) {
6778
6781
  /** Loads {@link file://./../../../runtime/workers/vmForks.ts} */
6779
- super(options), this.execArgv.push("--experimental-vm-modules"), this.entrypoint = resolve$1(options.distPath, "workers/vmForks.js");
6782
+ super({
6783
+ ...options,
6784
+ execArgv: [...options.execArgv, "--experimental-vm-modules"]
6785
+ }), this.entrypoint = resolve$1(options.distPath, "workers/vmForks.js");
6780
6786
  }
6781
6787
  }
6782
6788
 
@@ -6787,7 +6793,10 @@ class VmThreadsPoolWorker extends ThreadsPoolWorker {
6787
6793
  entrypoint;
6788
6794
  constructor(options) {
6789
6795
  /** Loads {@link file://./../../../runtime/workers/vmThreads.ts} */
6790
- super(options), this.execArgv.push("--experimental-vm-modules"), this.entrypoint = resolve$1(options.distPath, "workers/vmThreads.js");
6796
+ super({
6797
+ ...options,
6798
+ execArgv: [...options.execArgv, "--experimental-vm-modules"]
6799
+ }), this.entrypoint = resolve$1(options.distPath, "workers/vmThreads.js");
6791
6800
  }
6792
6801
  }
6793
6802
 
@@ -6958,7 +6967,7 @@ function createPool(ctx) {
6958
6967
  }
6959
6968
  const taskGroups = [];
6960
6969
  let workerId = 0;
6961
- const sorted = await sequencer.sort(specs), environments = await getSpecificationsEnvironments(specs), groups = groupSpecs(sorted);
6970
+ const sorted = await sequencer.sort(specs), environments = await getSpecificationsEnvironments(specs), groups = groupSpecs(sorted), projectEnvs = /* @__PURE__ */ new WeakMap(), projectExecArgvs = /* @__PURE__ */ new WeakMap();
6962
6971
  for (const group of groups) {
6963
6972
  if (!group) continue;
6964
6973
  const taskGroup = [], browserSpecs = [];
@@ -6975,6 +6984,19 @@ function createPool(ctx) {
6975
6984
  }
6976
6985
  const environment = environments.get(specs[0]);
6977
6986
  if (!environment) throw new Error(`Cannot find the environment. This is a bug in Vitest.`);
6987
+ let env = projectEnvs.get(project);
6988
+ if (!env) {
6989
+ // env are case-insensitive on Windows, but spawned processes don't support it
6990
+ if (env = {
6991
+ ...process.env,
6992
+ ...options.env,
6993
+ ...ctx.config.env,
6994
+ ...project.config.env
6995
+ }, isWindows) for (const name in env) env[name.toUpperCase()] = env[name];
6996
+ projectEnvs.set(project, env);
6997
+ }
6998
+ let execArgv = projectExecArgvs.get(project);
6999
+ if (!execArgv) execArgv = [...options.execArgv, ...project.config.execArgv], projectExecArgvs.set(project, execArgv);
6978
7000
  taskGroup.push({
6979
7001
  context: {
6980
7002
  pool,
@@ -6990,11 +7012,8 @@ function createPool(ctx) {
6990
7012
  workerId: workerId++
6991
7013
  },
6992
7014
  project,
6993
- env: {
6994
- ...options.env,
6995
- ...project.config.env
6996
- },
6997
- execArgv: [...options.execArgv, ...project.config.execArgv],
7015
+ env,
7016
+ execArgv,
6998
7017
  worker: pool,
6999
7018
  isolate: project.config.isolate,
7000
7019
  memoryLimit: getMemoryLimit(ctx.config, pool) ?? null
@@ -7042,7 +7061,8 @@ function resolveOptions(ctx) {
7042
7061
  return condition === "production" ? ctx.vite.config.isProduction : condition === "development" ? !ctx.vite.config.isProduction : true;
7043
7062
  }).map((condition) => {
7044
7063
  return viteMajor >= 6 && condition === "development|production" ? ctx.vite.config.isProduction ? "production" : "development" : condition;
7045
- }).flatMap((c) => ["--conditions", c]), options = {
7064
+ }).flatMap((c) => ["--conditions", c]);
7065
+ return {
7046
7066
  execArgv: [
7047
7067
  ...process.execArgv.filter((execArg) => execArg.startsWith("--cpu-prof") || execArg.startsWith("--heap-prof") || execArg.startsWith("--diagnostic-dir")),
7048
7068
  ...conditions,
@@ -7055,14 +7075,9 @@ function resolveOptions(ctx) {
7055
7075
  VITEST: "true",
7056
7076
  NODE_ENV: process.env.NODE_ENV || "test",
7057
7077
  VITEST_MODE: ctx.config.watch ? "WATCH" : "RUN",
7058
- FORCE_TTY: isatty(1) ? "true" : "",
7059
- ...process.env,
7060
- ...ctx.config.env
7078
+ FORCE_TTY: isatty(1) ? "true" : ""
7061
7079
  }
7062
7080
  };
7063
- // env are case-insensitive on Windows, but spawned processes don't support it
7064
- if (isWindows) for (const name in options.env) options.env[name.toUpperCase()] = options.env[name];
7065
- return options;
7066
7081
  }
7067
7082
  function resolveMaxWorkers(project) {
7068
7083
  if (project.config.maxWorkers) return project.config.maxWorkers;
@@ -1,5 +1,5 @@
1
1
  import v8 from 'node:v8';
2
- import { i as init } from './init.B2EESLQM.js';
2
+ import { i as init } from './init.94FWN9pW.js';
3
3
 
4
4
  if (!process.send) throw new Error("Expected worker to be run in node:child_process");
5
5
  // Store globals in case tests overwrite them
@@ -1,5 +1,5 @@
1
1
  import { isMainThread, parentPort } from 'node:worker_threads';
2
- import { i as init } from './init.B2EESLQM.js';
2
+ import { i as init } from './init.94FWN9pW.js';
3
3
 
4
4
  if (isMainThread || !parentPort) throw new Error("Expected worker to be run in node:worker_threads");
5
5
  function workerInit(options) {
@@ -5,7 +5,7 @@ import { isBuiltin } from 'node:module';
5
5
  import { pathToFileURL } from 'node:url';
6
6
  import { resolve } from 'pathe';
7
7
  import { ModuleRunner } from 'vite/module-runner';
8
- import { b as VitestTransport } from './startModuleRunner.C2tTvmF9.js';
8
+ import { b as VitestTransport } from './startModuleRunner.iF1E9Bt4.js';
9
9
  import { e as environments } from './index.CbWINfS7.js';
10
10
  import { s as setupInspect } from './inspector.DLZxSeU3.js';
11
11
  import { V as VitestEvaluatedModules } from './evaluatedModules.Dg1zASAC.js';
@@ -98,7 +98,7 @@ async function execute(method, ctx, worker) {
98
98
  if (!worker[methodName] || typeof worker[methodName] !== "function") throw new TypeError(`Test worker should expose "runTests" method. Received "${typeof worker.runTests}".`);
99
99
  await worker[methodName](state);
100
100
  } finally {
101
- await Promise.all(cleanups.map((fn) => fn())), await rpcDone().catch(() => {}), await environmentLoader?.close(), rpc.$close();
101
+ await rpcDone().catch(() => {}), await Promise.all(cleanups.map((fn) => fn())).catch(() => {}), await environmentLoader?.close();
102
102
  }
103
103
  }
104
104
  function run(ctx, worker) {
@@ -1,4 +1,4 @@
1
- import { V as Vitest, T as TestProject, a as TestProjectConfiguration } from './reporters.d.BMKt7f6I.js';
1
+ import { V as Vitest, T as TestProject, a as TestProjectConfiguration } from './reporters.d.D-el0219.js';
2
2
 
3
3
  interface VitestPluginContext {
4
4
  vitest: Vitest;
@@ -1891,7 +1891,15 @@ interface PoolTask {
1891
1891
  worker: "forks" | "threads" | "vmForks" | "vmThreads" | (string & {});
1892
1892
  project: TestProject;
1893
1893
  isolate: boolean;
1894
+ /**
1895
+ * Custom `process.env`. All tasks in the same project will reference the same object,
1896
+ * so modifying it once will modify it for every task.
1897
+ */
1894
1898
  env: Partial<NodeJS.ProcessEnv>;
1899
+ /**
1900
+ * Custom `execArgv`. All tasks in the same project will reference the same array,
1901
+ * so modifying it once will modify it for every task.
1902
+ */
1895
1903
  execArgv: string[];
1896
1904
  context: ContextRPC;
1897
1905
  memoryLimit: number | null;
@@ -2,7 +2,7 @@ import { chai } from '@vitest/expect';
2
2
  import { l as loadDiffConfig, b as loadSnapshotSerializers, t as takeCoverageInsideWorker } from './setup-common.DR1sucx6.js';
3
3
  import { r as rpc } from './rpc.cD77ENhU.js';
4
4
  import { g as getWorkerState } from './utils.CG9h5ccR.js';
5
- import { V as VitestTestRunner, N as NodeBenchmarkRunner } from './test.C3RPt8JR.js';
5
+ import { V as VitestTestRunner, N as NodeBenchmarkRunner } from './test.CR2PBYe2.js';
6
6
 
7
7
  function setupChaiConfig(config) {
8
8
  Object.assign(chai.config, config);
@@ -203,10 +203,9 @@ class VitestTestRunner {
203
203
  }
204
204
  function clearModuleMocks(config) {
205
205
  const { clearMocks, mockReset, restoreMocks, unstubEnvs, unstubGlobals } = config;
206
- // since each function calls another, we can just call one
207
206
  if (restoreMocks) vi.restoreAllMocks();
208
- else if (mockReset) vi.resetAllMocks();
209
- else if (clearMocks) vi.clearAllMocks();
207
+ if (mockReset) vi.resetAllMocks();
208
+ if (clearMocks) vi.clearAllMocks();
210
209
  if (unstubEnvs) vi.unstubAllEnvs();
211
210
  if (unstubGlobals) vi.unstubAllGlobals();
212
211
  }
@@ -10,7 +10,7 @@ import { findNearestPackageData } from '@vitest/utils/resolver';
10
10
  import { dirname as dirname$1 } from 'node:path';
11
11
  import { CSS_LANGS_RE, KNOWN_ASSET_RE } from '@vitest/utils/constants';
12
12
  import { getDefaultRequestStubs } from '../module-evaluator.js';
13
- import { s as startVitestModuleRunner, c as createNodeImportMeta, a as VITEST_VM_CONTEXT_SYMBOL } from './startModuleRunner.C2tTvmF9.js';
13
+ import { s as startVitestModuleRunner, c as createNodeImportMeta, a as VITEST_VM_CONTEXT_SYMBOL } from './startModuleRunner.iF1E9Bt4.js';
14
14
  import { p as provideWorkerState } from './utils.CG9h5ccR.js';
15
15
 
16
16
  function interopCommonJsModule(interopDefault, mod) {
package/dist/cli.js CHANGED
@@ -1,4 +1,4 @@
1
- import { c as createCLI } from './chunks/cac.B99MQg-w.js';
1
+ import { c as createCLI } from './chunks/cac.BbKNPQvp.js';
2
2
  import '@vitest/utils/helpers';
3
3
  import 'events';
4
4
  import 'pathe';
package/dist/config.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { HookHandler, ConfigEnv, UserConfig } from 'vite';
2
2
  export { ConfigEnv, Plugin, UserConfig as ViteUserConfig, mergeConfig } from 'vite';
3
- import { I as InlineConfig, c as CoverageV8Options, R as ResolvedCoverageOptions, U as UserWorkspaceConfig, d as UserProjectConfigFn, e as UserProjectConfigExport } from './chunks/reporters.d.BMKt7f6I.js';
4
- export { a as TestProjectConfiguration, g as TestProjectInlineConfiguration, f as TestUserConfig, W as WatcherTriggerPattern } from './chunks/reporters.d.BMKt7f6I.js';
5
- import { V as VitestPluginContext } from './chunks/plugin.d.DQU1R5px.js';
3
+ import { I as InlineConfig, c as CoverageV8Options, R as ResolvedCoverageOptions, U as UserWorkspaceConfig, d as UserProjectConfigFn, e as UserProjectConfigExport } from './chunks/reporters.d.D-el0219.js';
4
+ export { a as TestProjectConfiguration, g as TestProjectInlineConfiguration, f as TestUserConfig, W as WatcherTriggerPattern } from './chunks/reporters.d.D-el0219.js';
5
+ import { V as VitestPluginContext } from './chunks/plugin.d.D8LgBgbU.js';
6
6
  import { F as FakeTimerInstallOpts } from './chunks/config.d.u2CUDWwS.js';
7
7
  import '@vitest/runner';
8
8
  import '@vitest/utils';
@@ -1,4 +1,4 @@
1
- import { R as ResolvedCoverageOptions, V as Vitest, C as CoverageMap, b as ReportContext } from './chunks/reporters.d.BMKt7f6I.js';
1
+ import { R as ResolvedCoverageOptions, V as Vitest, C as CoverageMap, b as ReportContext } from './chunks/reporters.d.D-el0219.js';
2
2
  import { TransformResult } from 'vite';
3
3
  import { A as AfterSuiteRunMeta } from './chunks/worker.d.BFk-vvBU.js';
4
4
  import '@vitest/runner';
@@ -1,5 +1,5 @@
1
1
  export { VitestModuleEvaluator } from './module-evaluator.js';
2
- export { a as VITEST_VM_CONTEXT_SYMBOL, V as VitestModuleRunner, s as startVitestModuleRunner } from './chunks/startModuleRunner.C2tTvmF9.js';
2
+ export { a as VITEST_VM_CONTEXT_SYMBOL, V as VitestModuleRunner, s as startVitestModuleRunner } from './chunks/startModuleRunner.iF1E9Bt4.js';
3
3
  export { g as getWorkerState } from './chunks/utils.CG9h5ccR.js';
4
4
  import 'node:module';
5
5
  import 'node:url';
package/dist/node.d.ts CHANGED
@@ -3,14 +3,14 @@ import { InlineConfig, UserConfig as UserConfig$1, Plugin, ResolvedConfig as Res
3
3
  export { vite as Vite };
4
4
  export { esbuildVersion, isCSSRequest, isFileServingAllowed, parseAst, parseAstAsync, rollupVersion, version as viteVersion } from 'vite';
5
5
  import { IncomingMessage } from 'node:http';
6
- import { h as ResolvedConfig, f as UserConfig, i as VitestRunMode, j as VitestOptions, V as Vitest, A as ApiConfig, k as TestSpecification, T as TestProject, P as PoolWorker, l as PoolOptions, m as WorkerRequest, n as TestSequencer, L as Logger } from './chunks/reporters.d.BMKt7f6I.js';
7
- export { at as BaseCoverageOptions, Y as BenchmarkUserOptions, Z as BrowserBuiltinProvider, $ as BrowserCommand, a0 as BrowserCommandContext, a1 as BrowserConfigOptions, a2 as BrowserInstanceOption, a3 as BrowserModuleMocker, a4 as BrowserOrchestrator, a5 as BrowserProvider, a6 as BrowserProviderOption, a7 as BrowserScript, a8 as BrowserServerFactory, a9 as BrowserServerOptions, aa as BrowserServerState, ab as BrowserServerStateSession, ai as BuiltinEnvironment, ac as CDPSession, aj as CSSModuleScopeStrategy, au as CoverageIstanbulOptions, av as CoverageOptions, aw as CoverageProvider, ax as CoverageProviderModule, ay as CoverageReporter, c as CoverageV8Options, az as CustomProviderOptions, ak as DepsOptimizationOptions, al as EnvironmentOptions, H as HTMLOptions, I as InlineConfig, t as JUnitOptions, J as JsonOptions, M as ModuleDiagnostic, O as OnServerRestartHandler, o as OnTestsRerunHandler, ad as ParentProjectBrowser, am as Pool, q as PoolRunnerInitializer, r as PoolTask, ae as ProjectBrowser, an as ProjectConfig, b as ReportContext, aB as ReportedHookContext, aC as Reporter, ap as ResolveSnapshotPathHandler, aq as ResolveSnapshotPathHandlerContext, af as ResolvedBrowserOptions, R as ResolvedCoverageOptions, ao as ResolvedProjectConfig, S as SerializedTestProject, u as TaskOptions, v as TestCase, w as TestCollection, x as TestDiagnostic, y as TestModule, z as TestModuleState, B as TestResult, D as TestResultFailed, E as TestResultPassed, F as TestResultSkipped, aD as TestRunEndReason, aA as TestRunResult, X as TestSequencerConstructor, G as TestState, K as TestSuite, N as TestSuiteState, ag as ToMatchScreenshotComparators, ah as ToMatchScreenshotOptions, ar as TypecheckConfig, U as UserWorkspaceConfig, as as VitestEnvironment, p as VitestPackageInstaller, W as WatcherTriggerPattern, s as WorkerResponse, _ as _BrowserNames, Q as experimental_getRunnerTask } from './chunks/reporters.d.BMKt7f6I.js';
6
+ import { h as ResolvedConfig, f as UserConfig, i as VitestRunMode, j as VitestOptions, V as Vitest, A as ApiConfig, k as TestSpecification, T as TestProject, P as PoolWorker, l as PoolOptions, m as WorkerRequest, n as TestSequencer, L as Logger } from './chunks/reporters.d.D-el0219.js';
7
+ export { at as BaseCoverageOptions, Y as BenchmarkUserOptions, Z as BrowserBuiltinProvider, $ as BrowserCommand, a0 as BrowserCommandContext, a1 as BrowserConfigOptions, a2 as BrowserInstanceOption, a3 as BrowserModuleMocker, a4 as BrowserOrchestrator, a5 as BrowserProvider, a6 as BrowserProviderOption, a7 as BrowserScript, a8 as BrowserServerFactory, a9 as BrowserServerOptions, aa as BrowserServerState, ab as BrowserServerStateSession, ai as BuiltinEnvironment, ac as CDPSession, aj as CSSModuleScopeStrategy, au as CoverageIstanbulOptions, av as CoverageOptions, aw as CoverageProvider, ax as CoverageProviderModule, ay as CoverageReporter, c as CoverageV8Options, az as CustomProviderOptions, ak as DepsOptimizationOptions, al as EnvironmentOptions, H as HTMLOptions, I as InlineConfig, t as JUnitOptions, J as JsonOptions, M as ModuleDiagnostic, O as OnServerRestartHandler, o as OnTestsRerunHandler, ad as ParentProjectBrowser, am as Pool, q as PoolRunnerInitializer, r as PoolTask, ae as ProjectBrowser, an as ProjectConfig, b as ReportContext, aB as ReportedHookContext, aC as Reporter, ap as ResolveSnapshotPathHandler, aq as ResolveSnapshotPathHandlerContext, af as ResolvedBrowserOptions, R as ResolvedCoverageOptions, ao as ResolvedProjectConfig, S as SerializedTestProject, u as TaskOptions, v as TestCase, w as TestCollection, x as TestDiagnostic, y as TestModule, z as TestModuleState, B as TestResult, D as TestResultFailed, E as TestResultPassed, F as TestResultSkipped, aD as TestRunEndReason, aA as TestRunResult, X as TestSequencerConstructor, G as TestState, K as TestSuite, N as TestSuiteState, ag as ToMatchScreenshotComparators, ah as ToMatchScreenshotOptions, ar as TypecheckConfig, U as UserWorkspaceConfig, as as VitestEnvironment, p as VitestPackageInstaller, W as WatcherTriggerPattern, s as WorkerResponse, _ as _BrowserNames, Q as experimental_getRunnerTask } from './chunks/reporters.d.D-el0219.js';
8
8
  import { Awaitable } from '@vitest/utils';
9
9
  export { SerializedError } from '@vitest/utils';
10
10
  import { R as RuntimeRPC, C as ContextRPC } from './chunks/worker.d.BFk-vvBU.js';
11
11
  export { T as TestExecutionType } from './chunks/worker.d.BFk-vvBU.js';
12
12
  import { Writable } from 'node:stream';
13
- export { V as VitestPluginContext } from './chunks/plugin.d.DQU1R5px.js';
13
+ export { V as VitestPluginContext } from './chunks/plugin.d.D8LgBgbU.js';
14
14
  import { Debugger } from 'debug';
15
15
  import './chunks/global.d.BgJSTpgQ.js';
16
16
  export { Task as RunnerTask, TaskResult as RunnerTaskResult, TaskResultPack as RunnerTaskResultPack, Test as RunnerTestCase, File as RunnerTestFile, Suite as RunnerTestSuite, SequenceHooks, SequenceSetupFiles } from '@vitest/runner';
package/dist/node.js CHANGED
@@ -1,9 +1,9 @@
1
1
  import * as vite from 'vite';
2
2
  import { resolveConfig as resolveConfig$1, mergeConfig } from 'vite';
3
3
  export { esbuildVersion, isCSSRequest, isFileServingAllowed, parseAst, parseAstAsync, rollupVersion, version as viteVersion } from 'vite';
4
- import { V as Vitest, a as VitestPlugin } from './chunks/cli-api.PwHwIMss.js';
5
- export { f as ForksPoolWorker, G as GitNotFoundError, F as TestsNotFoundError, T as ThreadsPoolWorker, h as TypecheckPoolWorker, b as VitestPackageInstaller, j as VmForksPoolWorker, k as VmThreadsPoolWorker, o as createDebugger, d as createMethodsRPC, n as createViteLogger, c as createVitest, e as escapeTestName, l as experimental_getRunnerTask, g as getFilePoolName, i as isValidApiRequest, m as registerConsoleShortcuts, r as resolveFsAllow, s as startVitest } from './chunks/cli-api.PwHwIMss.js';
6
- export { p as parseCLI } from './chunks/cac.B99MQg-w.js';
4
+ import { V as Vitest, a as VitestPlugin } from './chunks/cli-api.B5AMMsRQ.js';
5
+ export { f as ForksPoolWorker, G as GitNotFoundError, F as TestsNotFoundError, T as ThreadsPoolWorker, h as TypecheckPoolWorker, b as VitestPackageInstaller, j as VmForksPoolWorker, k as VmThreadsPoolWorker, o as createDebugger, d as createMethodsRPC, n as createViteLogger, c as createVitest, e as escapeTestName, l as experimental_getRunnerTask, g as getFilePoolName, i as isValidApiRequest, m as registerConsoleShortcuts, r as resolveFsAllow, s as startVitest } from './chunks/cli-api.B5AMMsRQ.js';
6
+ export { p as parseCLI } from './chunks/cac.BbKNPQvp.js';
7
7
  import { r as resolveConfig$2 } from './chunks/coverage.FU3w4IrQ.js';
8
8
  export { b as BaseSequencer, a as resolveApiServerConfig } from './chunks/coverage.FU3w4IrQ.js';
9
9
  import { slash, deepClone } from '@vitest/utils/helpers';
@@ -1,4 +1,4 @@
1
- export { aR as BaseReporter, aS as BenchmarkBuiltinReporters, aE as BenchmarkReporter, aF as BenchmarkReportsMap, aT as BuiltinReporterOptions, aU as BuiltinReporters, aG as DefaultReporter, aH as DotReporter, aI as GithubActionsReporter, aJ as HangingProcessReporter, aL as JUnitReporter, aV as JsonAssertionResult, aK as JsonReporter, aW as JsonTestResult, aX as JsonTestResults, aB as ReportedHookContext, aC as Reporter, aM as ReportersMap, aN as TapFlatReporter, aO as TapReporter, aD as TestRunEndReason, aP as VerboseBenchmarkReporter, aQ as VerboseReporter } from './chunks/reporters.d.BMKt7f6I.js';
1
+ export { aR as BaseReporter, aS as BenchmarkBuiltinReporters, aE as BenchmarkReporter, aF as BenchmarkReportsMap, aT as BuiltinReporterOptions, aU as BuiltinReporters, aG as DefaultReporter, aH as DotReporter, aI as GithubActionsReporter, aJ as HangingProcessReporter, aL as JUnitReporter, aV as JsonAssertionResult, aK as JsonReporter, aW as JsonTestResult, aX as JsonTestResults, aB as ReportedHookContext, aC as Reporter, aM as ReportersMap, aN as TapFlatReporter, aO as TapReporter, aD as TestRunEndReason, aP as VerboseBenchmarkReporter, aQ as VerboseReporter } from './chunks/reporters.d.D-el0219.js';
2
2
  import '@vitest/runner';
3
3
  import '@vitest/utils';
4
4
  import './chunks/worker.d.BFk-vvBU.js';
package/dist/runners.js CHANGED
@@ -1,4 +1,4 @@
1
- export { N as NodeBenchmarkRunner, V as VitestTestRunner } from './chunks/test.C3RPt8JR.js';
1
+ export { N as NodeBenchmarkRunner, V as VitestTestRunner } from './chunks/test.CR2PBYe2.js';
2
2
  import '@vitest/runner';
3
3
  import '@vitest/utils/helpers';
4
4
  import '@vitest/utils/timers';
package/dist/worker.js CHANGED
@@ -1,11 +1,11 @@
1
- export { r as runBaseTests } from './chunks/base.CtHM3ryk.js';
2
- export { i as init } from './chunks/init.B2EESLQM.js';
1
+ export { r as runBaseTests } from './chunks/base.CVAgx931.js';
2
+ export { i as init } from './chunks/init.94FWN9pW.js';
3
3
  import 'node:vm';
4
4
  import '@vitest/spy';
5
5
  import './chunks/evaluatedModules.Dg1zASAC.js';
6
6
  import 'pathe';
7
7
  import 'vite/module-runner';
8
- import './chunks/startModuleRunner.C2tTvmF9.js';
8
+ import './chunks/startModuleRunner.iF1E9Bt4.js';
9
9
  import 'node:fs';
10
10
  import 'node:module';
11
11
  import '@vitest/utils/helpers';
@@ -17,7 +17,7 @@ import './module-evaluator.js';
17
17
  import '@vitest/mocker';
18
18
  import 'node:perf_hooks';
19
19
  import '@vitest/runner';
20
- import './chunks/resolveSnapshotEnvironment.DJJKMKxb.js';
20
+ import './chunks/resolveSnapshotEnvironment.yzXri_YN.js';
21
21
  import '@vitest/expect';
22
22
  import './chunks/setup-common.DR1sucx6.js';
23
23
  import './chunks/coverage.D_JHT54q.js';
@@ -26,7 +26,7 @@ import '@vitest/utils/timers';
26
26
  import './chunks/utils.CG9h5ccR.js';
27
27
  import './chunks/rpc.cD77ENhU.js';
28
28
  import './chunks/index.Bgo3tNWt.js';
29
- import './chunks/test.C3RPt8JR.js';
29
+ import './chunks/test.CR2PBYe2.js';
30
30
  import './chunks/benchmark.DHKMYAts.js';
31
31
  import '@vitest/runner/utils';
32
32
  import '@vitest/utils/error';
@@ -1,11 +1,11 @@
1
- import { r as runBaseTests } from '../chunks/base.CtHM3ryk.js';
2
- import { w as workerInit } from '../chunks/init-forks.DSafeltJ.js';
1
+ import { r as runBaseTests } from '../chunks/base.CVAgx931.js';
2
+ import { w as workerInit } from '../chunks/init-forks.WglB-sfY.js';
3
3
  import 'node:vm';
4
4
  import '@vitest/spy';
5
5
  import '../chunks/evaluatedModules.Dg1zASAC.js';
6
6
  import 'pathe';
7
7
  import 'vite/module-runner';
8
- import '../chunks/startModuleRunner.C2tTvmF9.js';
8
+ import '../chunks/startModuleRunner.iF1E9Bt4.js';
9
9
  import 'node:fs';
10
10
  import 'node:module';
11
11
  import '@vitest/utils/helpers';
@@ -17,7 +17,7 @@ import '../module-evaluator.js';
17
17
  import '@vitest/mocker';
18
18
  import 'node:perf_hooks';
19
19
  import '@vitest/runner';
20
- import '../chunks/resolveSnapshotEnvironment.DJJKMKxb.js';
20
+ import '../chunks/resolveSnapshotEnvironment.yzXri_YN.js';
21
21
  import '@vitest/expect';
22
22
  import '../chunks/setup-common.DR1sucx6.js';
23
23
  import '../chunks/coverage.D_JHT54q.js';
@@ -26,7 +26,7 @@ import '@vitest/utils/timers';
26
26
  import '../chunks/utils.CG9h5ccR.js';
27
27
  import '../chunks/rpc.cD77ENhU.js';
28
28
  import '../chunks/index.Bgo3tNWt.js';
29
- import '../chunks/test.C3RPt8JR.js';
29
+ import '../chunks/test.CR2PBYe2.js';
30
30
  import '../chunks/benchmark.DHKMYAts.js';
31
31
  import '@vitest/runner/utils';
32
32
  import '@vitest/utils/error';
@@ -43,7 +43,7 @@ import '@vitest/utils/constants';
43
43
  import '../chunks/index.RwjEGCQ0.js';
44
44
  import 'expect-type';
45
45
  import 'node:v8';
46
- import '../chunks/init.B2EESLQM.js';
46
+ import '../chunks/init.94FWN9pW.js';
47
47
  import '../chunks/index.CbWINfS7.js';
48
48
  import 'node:console';
49
49
 
@@ -5,7 +5,7 @@ import timersPromises from 'node:timers/promises';
5
5
  import util from 'node:util';
6
6
  import { startTests, collectTests } from '@vitest/runner';
7
7
  import { KNOWN_ASSET_TYPES } from '@vitest/utils/constants';
8
- import { s as setupChaiConfig, r as resolveTestRunner, a as resolveSnapshotEnvironment } from '../chunks/resolveSnapshotEnvironment.DJJKMKxb.js';
8
+ import { s as setupChaiConfig, r as resolveTestRunner, a as resolveSnapshotEnvironment } from '../chunks/resolveSnapshotEnvironment.yzXri_YN.js';
9
9
  import { c as setupCommonEnv, s as startCoverageInsideWorker, a as stopCoverageInsideWorker } from '../chunks/setup-common.DR1sucx6.js';
10
10
  import { i as index } from '../chunks/index.RwjEGCQ0.js';
11
11
  import { c as closeInspector } from '../chunks/inspector.DLZxSeU3.js';
@@ -15,7 +15,7 @@ import '@vitest/expect';
15
15
  import '../chunks/rpc.cD77ENhU.js';
16
16
  import '@vitest/utils/timers';
17
17
  import '../chunks/index.Bgo3tNWt.js';
18
- import '../chunks/test.C3RPt8JR.js';
18
+ import '../chunks/test.CR2PBYe2.js';
19
19
  import '@vitest/utils/helpers';
20
20
  import '../chunks/benchmark.DHKMYAts.js';
21
21
  import '@vitest/runner/utils';
@@ -1,11 +1,11 @@
1
- import { r as runBaseTests } from '../chunks/base.CtHM3ryk.js';
2
- import { w as workerInit } from '../chunks/init-threads.SUtZ-067.js';
1
+ import { r as runBaseTests } from '../chunks/base.CVAgx931.js';
2
+ import { w as workerInit } from '../chunks/init-threads.Czek6eA5.js';
3
3
  import 'node:vm';
4
4
  import '@vitest/spy';
5
5
  import '../chunks/evaluatedModules.Dg1zASAC.js';
6
6
  import 'pathe';
7
7
  import 'vite/module-runner';
8
- import '../chunks/startModuleRunner.C2tTvmF9.js';
8
+ import '../chunks/startModuleRunner.iF1E9Bt4.js';
9
9
  import 'node:fs';
10
10
  import 'node:module';
11
11
  import '@vitest/utils/helpers';
@@ -17,7 +17,7 @@ import '../module-evaluator.js';
17
17
  import '@vitest/mocker';
18
18
  import 'node:perf_hooks';
19
19
  import '@vitest/runner';
20
- import '../chunks/resolveSnapshotEnvironment.DJJKMKxb.js';
20
+ import '../chunks/resolveSnapshotEnvironment.yzXri_YN.js';
21
21
  import '@vitest/expect';
22
22
  import '../chunks/setup-common.DR1sucx6.js';
23
23
  import '../chunks/coverage.D_JHT54q.js';
@@ -26,7 +26,7 @@ import '@vitest/utils/timers';
26
26
  import '../chunks/utils.CG9h5ccR.js';
27
27
  import '../chunks/rpc.cD77ENhU.js';
28
28
  import '../chunks/index.Bgo3tNWt.js';
29
- import '../chunks/test.C3RPt8JR.js';
29
+ import '../chunks/test.CR2PBYe2.js';
30
30
  import '../chunks/benchmark.DHKMYAts.js';
31
31
  import '@vitest/runner/utils';
32
32
  import '@vitest/utils/error';
@@ -43,7 +43,7 @@ import '@vitest/utils/constants';
43
43
  import '../chunks/index.RwjEGCQ0.js';
44
44
  import 'expect-type';
45
45
  import 'node:worker_threads';
46
- import '../chunks/init.B2EESLQM.js';
46
+ import '../chunks/init.94FWN9pW.js';
47
47
  import '../chunks/index.CbWINfS7.js';
48
48
  import 'node:console';
49
49
 
@@ -1,7 +1,7 @@
1
- import { w as workerInit } from '../chunks/init-forks.DSafeltJ.js';
2
- import { r as runVmTests } from '../chunks/vm.DBeOXrP9.js';
1
+ import { w as workerInit } from '../chunks/init-forks.WglB-sfY.js';
2
+ import { r as runVmTests } from '../chunks/vm.CuMWYx_F.js';
3
3
  import 'node:v8';
4
- import '../chunks/init.B2EESLQM.js';
4
+ import '../chunks/init.94FWN9pW.js';
5
5
  import '@vitest/utils/error';
6
6
  import '@vitest/utils/source-map';
7
7
  import 'node:fs';
@@ -9,7 +9,7 @@ import 'node:module';
9
9
  import 'node:url';
10
10
  import 'pathe';
11
11
  import 'vite/module-runner';
12
- import '../chunks/startModuleRunner.C2tTvmF9.js';
12
+ import '../chunks/startModuleRunner.iF1E9Bt4.js';
13
13
  import '@vitest/utils/helpers';
14
14
  import '../path.js';
15
15
  import 'node:path';
@@ -1,7 +1,7 @@
1
- import { w as workerInit } from '../chunks/init-threads.SUtZ-067.js';
2
- import { r as runVmTests } from '../chunks/vm.DBeOXrP9.js';
1
+ import { w as workerInit } from '../chunks/init-threads.Czek6eA5.js';
2
+ import { r as runVmTests } from '../chunks/vm.CuMWYx_F.js';
3
3
  import 'node:worker_threads';
4
- import '../chunks/init.B2EESLQM.js';
4
+ import '../chunks/init.94FWN9pW.js';
5
5
  import '@vitest/utils/error';
6
6
  import '@vitest/utils/source-map';
7
7
  import 'node:fs';
@@ -9,7 +9,7 @@ import 'node:module';
9
9
  import 'node:url';
10
10
  import 'pathe';
11
11
  import 'vite/module-runner';
12
- import '../chunks/startModuleRunner.C2tTvmF9.js';
12
+ import '../chunks/startModuleRunner.iF1E9Bt4.js';
13
13
  import '@vitest/utils/helpers';
14
14
  import '../path.js';
15
15
  import 'node:path';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "vitest",
3
3
  "type": "module",
4
- "version": "4.0.0",
4
+ "version": "4.0.2",
5
5
  "description": "Next generation testing framework powered by Vite",
6
6
  "author": "Anthony Fu <anthonyfu117@hotmail.com>",
7
7
  "license": "MIT",
@@ -134,10 +134,10 @@
134
134
  "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0",
135
135
  "happy-dom": "*",
136
136
  "jsdom": "*",
137
- "@vitest/browser-playwright": "4.0.0",
138
- "@vitest/browser-preview": "4.0.0",
139
- "@vitest/ui": "4.0.0",
140
- "@vitest/browser-webdriverio": "4.0.0"
137
+ "@vitest/browser-preview": "4.0.2",
138
+ "@vitest/browser-playwright": "4.0.2",
139
+ "@vitest/ui": "4.0.2",
140
+ "@vitest/browser-webdriverio": "4.0.2"
141
141
  },
142
142
  "peerDependenciesMeta": {
143
143
  "@edge-runtime/vm": {
@@ -182,13 +182,13 @@
182
182
  "tinyrainbow": "^3.0.3",
183
183
  "vite": "^6.0.0 || ^7.0.0",
184
184
  "why-is-node-running": "^2.3.0",
185
- "@vitest/expect": "4.0.0",
186
- "@vitest/mocker": "4.0.0",
187
- "@vitest/pretty-format": "4.0.0",
188
- "@vitest/runner": "4.0.0",
189
- "@vitest/snapshot": "4.0.0",
190
- "@vitest/utils": "4.0.0",
191
- "@vitest/spy": "4.0.0"
185
+ "@vitest/mocker": "4.0.2",
186
+ "@vitest/runner": "4.0.2",
187
+ "@vitest/expect": "4.0.2",
188
+ "@vitest/pretty-format": "4.0.2",
189
+ "@vitest/spy": "4.0.2",
190
+ "@vitest/utils": "4.0.2",
191
+ "@vitest/snapshot": "4.0.2"
192
192
  },
193
193
  "devDependencies": {
194
194
  "@antfu/install-pkg": "^1.1.0",
@@ -437,8 +437,8 @@ class VitestTransport {
437
437
  if (event.type !== "custom") return { error: /* @__PURE__ */ new Error(`Vitest Module Runner doesn't support Vite HMR events.`) };
438
438
  if (event.event !== "vite:invoke") return { error: /* @__PURE__ */ new Error(`Vitest Module Runner doesn't support ${event.event} event.`) };
439
439
  const { name, data } = event.data;
440
- if (name !== "fetchModule") return { error: /* @__PURE__ */ new Error(`Unknown method: ${name}. Expected "fetchModule".`) };
441
440
  if (name === "getBuiltins") return { result: [...nodeBuiltins, /^node:/] };
441
+ if (name !== "fetchModule") return { error: /* @__PURE__ */ new Error(`Unknown method: ${name}. Expected "fetchModule".`) };
442
442
  try {
443
443
  return { result: await this.options.fetchModule(...data) };
444
444
  } catch (error) {