@@ -93,7 +93,6 @@ async function onMessage(message: WorkerRequest, project: TestProject): Promise<
9393
9494 case 'stop' : {
9595 await runPromise
96- await project . typechecker ?. stop ( )
9796 return { type : 'stopped' , __vitest_worker_response__ }
9897 }
9998 }
@@ -221,8 +220,9 @@ function createRunner(vitest: Vitest) {
221220
222221 const files = specs . map ( spec => spec . filepath )
223222 const promise = createDefer < void > ( )
223+
224224 // check that watcher actually triggered rerun
225- const _p = new Promise < boolean > ( ( resolve ) => {
225+ const triggered = await new Promise < boolean > ( ( resolve ) => {
226226 const _i = setInterval ( ( ) => {
227227 if ( ! project . typechecker || rerunTriggered . has ( project ) ) {
228228 resolve ( true )
@@ -234,15 +234,23 @@ function createRunner(vitest: Vitest) {
234234 clearInterval ( _i )
235235 } , 500 ) . unref ( )
236236 } )
237- const triggered = await _p
237+
238+ // Re-run but wasn't triggered by tsc
239+ if ( promisesMap . has ( project ) && ! triggered ) {
240+ return promisesMap . get ( project )
241+ }
242+
238243 if ( project . typechecker && ! triggered ) {
239244 const testFiles = project . typechecker . getTestFiles ( )
245+
240246 for ( const file of testFiles ) {
241247 await vitest . _testRun . enqueued ( project , file )
242248 }
249+
243250 await vitest . _testRun . collected ( project , testFiles )
244251 await onParseEnd ( project , project . typechecker . getResult ( ) )
245252 }
253+
246254 promises . push ( promise )
247255 promisesMap . set ( project , promise )
248256 promises . push ( startTypechecker ( project , files ) )
0 commit comments