MCPcopy
hub / github.com/vitest-dev/vitest / schedule

Method schedule

packages/vitest/src/node/pools/pool.ts:67–186  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

65 }
66
67 private async schedule(): Promise<void> {
68 if (this.queue.length === 0 || this.activeTasks.length >= this.maxWorkers) {
69 return
70 }
71
72 const { task, resolver, method } = this.queue.shift()!
73
74 try {
75 let isMemoryLimitReached = false
76 const runner = this.getPoolRunner(task, method)
77
78 const poolId = runner.poolId ?? this.getWorkerId()
79 runner.poolId = poolId
80
81 const activeTask = { task, resolver, method, cancelTask }
82 this.activeTasks.push(activeTask)
83
84 // active tasks receive cancel signal and shut down gracefully
85 async function cancelTask(options?: { force: boolean }) {
86 if (options?.force) {
87 await runner.stop({ force: true })
88 }
89
90 await runner.waitForTerminated()
91 resolver.reject(new Error('Cancelled'))
92 }
93
94 const onFinished = (message: WorkerResponse) => {
95 if (message?.__vitest_worker_response__ && message.type === 'testfileFinished') {
96 if (task.memoryLimit && message.usedMemory) {
97 isMemoryLimitReached = message.usedMemory >= task.memoryLimit
98 }
99 if (message.error) {
100 this.options.state.catchError(message.error, 'Test Run Error')
101 }
102
103 runner.off('message', onFinished)
104 runner.off('error', onTaskError)
105 resolver.resolve()
106 }
107 }
108
109 function onTaskError(error: unknown) {
110 runner.off('message', onFinished)
111 runner.off('error', onTaskError)
112 resolver.reject(new Error(`[vitest-pool]: Worker ${task.worker} emitted error.`, { cause: error }))
113 }
114
115 runner.on('message', onFinished)
116 runner.on('error', onTaskError)
117
118 if (!runner.isStarted) {
119 const id = setTimeout(
120 () => resolver.reject(new Error(`[vitest-pool]: Timeout starting ${task.worker} runner.`)),
121 WORKER_START_TIMEOUT,
122 )
123
124 await runner.start({ workerId: task.context.workerId })

Callers 1

runMethod · 0.95

Calls 14

getPoolRunnerMethod · 0.95
getWorkerIdMethod · 0.95
freeWorkerIdMethod · 0.95
formatFilesFunction · 0.85
isEqualRunnerFunction · 0.85
startTracesSpanMethod · 0.80
requestMethod · 0.80
endMethod · 0.80
errorMethod · 0.80
onMethod · 0.45
rejectMethod · 0.45
startMethod · 0.45

Tested by

no test coverage detected