Skip to content

Commit e30d9b4

Browse files
authored
fix(vitest): cache fs code only for forks pool (#5909)
1 parent e6020b9 commit e30d9b4

File tree

3 files changed

+24
-16
lines changed

3 files changed

+24
-16
lines changed

packages/vitest/src/node/pools/forks.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ function createChildProcessChannel(project: WorkspaceProject) {
2929
postMessage: message => emitter.emit(events.response, message),
3030
}
3131

32-
const rpc = createBirpc<RunnerRPC, RuntimeRPC>(createMethodsRPC(project), {
32+
const rpc = createBirpc<RunnerRPC, RuntimeRPC>(createMethodsRPC(project, { cacheFs: true }), {
3333
eventNames: ['onCancel'],
3434
serialize: v8.serialize,
3535
deserialize: v => v8.deserialize(Buffer.from(v)),

packages/vitest/src/node/pools/rpc.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,13 @@ import type { WorkspaceProject } from '../workspace'
88
const created = new Set()
99
const promises = new Map<string, Promise<void>>()
1010

11-
export function createMethodsRPC(project: WorkspaceProject): RuntimeRPC {
11+
interface MethodsOptions {
12+
cacheFs?: boolean
13+
}
14+
15+
export function createMethodsRPC(project: WorkspaceProject, options: MethodsOptions = {}): RuntimeRPC {
1216
const ctx = project.ctx
17+
const cacheFs = options.cacheFs ?? false
1318
return {
1419
snapshotSaved(snapshot) {
1520
ctx.snapshot.add(snapshot)
@@ -30,7 +35,7 @@ export function createMethodsRPC(project: WorkspaceProject): RuntimeRPC {
3035
async fetch(id, transformMode) {
3136
const result = await project.vitenode.fetchResult(id, transformMode)
3237
const code = result.code
33-
if (result.externalize) {
38+
if (!cacheFs || result.externalize) {
3439
return result
3540
}
3641
if ('id' in result && typeof result.id === 'string') {

packages/vitest/src/node/pools/vmForks.ts

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -34,20 +34,23 @@ function createChildProcessChannel(project: WorkspaceProject) {
3434
postMessage: message => emitter.emit(events.response, message),
3535
}
3636

37-
const rpc = createBirpc<RunnerRPC, RuntimeRPC>(createMethodsRPC(project), {
38-
eventNames: ['onCancel'],
39-
serialize: v8.serialize,
40-
deserialize: v => v8.deserialize(Buffer.from(v)),
41-
post(v) {
42-
emitter.emit(events.message, v)
37+
const rpc = createBirpc<RunnerRPC, RuntimeRPC>(
38+
createMethodsRPC(project, { cacheFs: true }),
39+
{
40+
eventNames: ['onCancel'],
41+
serialize: v8.serialize,
42+
deserialize: v => v8.deserialize(Buffer.from(v)),
43+
post(v) {
44+
emitter.emit(events.message, v)
45+
},
46+
on(fn) {
47+
emitter.on(events.response, fn)
48+
},
49+
onTimeoutError(functionName) {
50+
throw new Error(`[vitest-pool]: Timeout calling "${functionName}"`)
51+
},
4352
},
44-
on(fn) {
45-
emitter.on(events.response, fn)
46-
},
47-
onTimeoutError(functionName) {
48-
throw new Error(`[vitest-pool]: Timeout calling "${functionName}"`)
49-
},
50-
})
53+
)
5154

5255
project.ctx.onCancel(reason => rpc.onCancel(reason))
5356

0 commit comments

Comments
 (0)