Skip to content

Commit e0e2017

Browse files
authored
perf: close pool early in run-mode (#4623)
1 parent f7a7333 commit e0e2017

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

packages/vitest/src/node/core.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { ViteNodeRunner } from 'vite-node/client'
1010
import { SnapshotManager } from '@vitest/snapshot/manager'
1111
import type { CancelReason, File } from '@vitest/runner'
1212
import { ViteNodeServer } from 'vite-node/server'
13-
import type { ArgumentsType, CoverageProvider, OnServerRestartHandler, Reporter, ResolvedConfig, UserConfig, UserWorkspaceConfig, VitestRunMode } from '../types'
13+
import type { ArgumentsType, Awaitable, CoverageProvider, OnServerRestartHandler, Reporter, ResolvedConfig, UserConfig, UserWorkspaceConfig, VitestRunMode } from '../types'
1414
import { hasFailed, noop, slash, toArray } from '../utils'
1515
import { getCoverageProvider } from '../integrations/coverage'
1616
import type { BrowserProvider } from '../types/browser'
@@ -76,6 +76,7 @@ export class Vitest {
7676
private _onClose: (() => Awaited<unknown>)[] = []
7777
private _onSetServer: OnServerRestartHandler[] = []
7878
private _onCancelListeners: ((reason: CancelReason) => Promise<void> | void)[] = []
79+
private _poolClosePromise?: Awaitable<void>
7980

8081
async setServer(options: UserConfig, server: ViteDevServer, cliOptions: UserConfig) {
8182
this.unregisterWatcher?.()
@@ -357,6 +358,10 @@ export class Vitest {
357358
await this.runFiles(files)
358359
}
359360

361+
// In run mode close pool as early as possible
362+
if (!this.config.watch && this.pool?.close)
363+
this._poolClosePromise = this.pool.close()
364+
360365
await this.reportCoverage(true)
361366

362367
if (this.config.watch)
@@ -780,7 +785,9 @@ export class Vitest {
780785

781786
if (this.pool) {
782787
closePromises.push((async () => {
783-
await this.pool?.close?.()
788+
await (this._poolClosePromise || this.pool?.close?.())
789+
790+
this._poolClosePromise = undefined
784791
this.pool = undefined
785792
})())
786793
}

0 commit comments

Comments
 (0)