@@ -51,16 +51,27 @@ export async function createVitestProcess(pkg: VitestPackage) {
5151 cwd : pkg . cwd ,
5252 } )
5353
54- vitest . stdout ?. on ( 'data' , d => log . worker ( 'info' , d . toString ( ) ) )
54+ const stdoutCallbacks = new Set < ( data : string ) => void > ( )
55+
56+ vitest . stdout ?. on ( 'data' , ( d ) => {
57+ const content = d . toString ( )
58+ stdoutCallbacks . forEach ( cb => cb ( content ) )
59+ log . worker ( 'info' , content )
60+ } )
5561 vitest . stderr ?. on ( 'data' , ( chunk ) => {
5662 const string = chunk . toString ( )
5763 log . worker ( 'error' , string )
64+ stdoutCallbacks . forEach ( cb => cb ( string ) )
5865 if ( string . startsWith ( ' MISSING DEPENDENCY' ) ) {
5966 const error = string . split ( / \r ? \n / , 1 ) [ 0 ] . slice ( ' MISSING DEPENDENCY' . length )
6067 showVitestError ( error )
6168 }
6269 } )
6370
71+ vitest . on ( 'exit' , ( ) => {
72+ stdoutCallbacks . clear ( )
73+ } )
74+
6475 return new Promise < ResolvedMeta > ( ( resolve , reject ) => {
6576 function onExit ( code : number | null ) {
6677 reject ( new Error ( `Vitest process exited with code ${ code } ` ) )
@@ -69,7 +80,17 @@ export async function createVitestProcess(pkg: VitestPackage) {
6980 vitest . on ( 'exit' , onExit )
7081
7182 waitForWsResolvedMeta ( wss , pkg , false , 'child_process' , vitest )
72- . then ( resolve , reject )
83+ . then ( ( resolved ) => {
84+ resolved . handlers . onStdout = ( callback : ( data : string ) => void ) => {
85+ stdoutCallbacks . add ( callback )
86+ }
87+ const clearListeners = resolved . handlers . clearListeners
88+ resolved . handlers . clearListeners = ( ) => {
89+ clearListeners ( )
90+ stdoutCallbacks . clear ( )
91+ }
92+ resolve ( resolved )
93+ } , reject )
7394 . finally ( ( ) => {
7495 vitest . off ( 'exit' , onExit )
7596 } )
0 commit comments