@@ -308,12 +308,13 @@ public function testDetectsClosingStdoutWithoutHavingToWaitForExit()
308308 $ process ->start ($ loop );
309309
310310 $ closed = false ;
311- $ process ->stdout ->on ('close ' , function () use (&$ closed ) {
311+ $ process ->stdout ->on ('close ' , function () use (&$ closed, $ loop ) {
312312 $ closed = true ;
313+ $ loop ->stop ();
313314 });
314315
315- // run loop for 0.1s only
316- $ loop ->addTimer (0.1 , function () use ($ loop ) {
316+ // run loop for maximum of 0.5s only
317+ $ loop ->addTimer (0.5 , function () use ($ loop ) {
317318 $ loop ->stop ();
318319 });
319320 $ loop ->run ();
@@ -330,15 +331,21 @@ public function testKeepsRunningEvenWhenAllStdioPipesHaveBeenClosed()
330331 $ process ->start ($ loop );
331332
332333 $ closed = 0 ;
333- $ process ->stdout ->on ('close ' , function () use (&$ closed ) {
334+ $ process ->stdout ->on ('close ' , function () use (&$ closed, $ loop ) {
334335 ++$ closed ;
336+ if ($ closed === 2 ) {
337+ $ loop ->stop ();
338+ }
335339 });
336- $ process ->stderr ->on ('close ' , function () use (&$ closed ) {
340+ $ process ->stderr ->on ('close ' , function () use (&$ closed, $ loop ) {
337341 ++$ closed ;
342+ if ($ closed === 2 ) {
343+ $ loop ->stop ();
344+ }
338345 });
339346
340- // run loop for 0.1s only
341- $ loop ->addTimer (0.1 , function () use ($ loop ) {
347+ // run loop for maximum 0.5s only
348+ $ loop ->addTimer (0.5 , function () use ($ loop ) {
342349 $ loop ->stop ();
343350 });
344351 $ loop ->run ();
@@ -359,7 +366,7 @@ public function testDetectsClosingProcessEvenWhenAllStdioPipesHaveBeenClosed()
359366 $ loop ->run ();
360367 $ time = microtime (true ) - $ time ;
361368
362- $ this ->assertLessThan (0.1 , $ time );
369+ $ this ->assertLessThan (0.5 , $ time );
363370 $ this ->assertSame (0 , $ process ->getExitCode ());
364371 }
365372
0 commit comments