@@ -513,9 +513,14 @@ def _sleep_some(cls):
513513 time .sleep (100 )
514514
515515 @classmethod
516- def _sleep_no_int_handler (cls ):
516+ def _sleep_some_event (cls , event ):
517+ event .set ()
518+ time .sleep (100 )
519+
520+ @classmethod
521+ def _sleep_no_int_handler (cls , event ):
517522 signal .signal (signal .SIGINT , signal .SIG_DFL )
518- cls ._sleep_some ( )
523+ cls ._sleep_some_event ( event )
519524
520525 @classmethod
521526 def _test_sleep (cls , delay ):
@@ -525,7 +530,10 @@ def _kill_process(self, meth, target=None):
525530 if self .TYPE == 'threads' :
526531 self .skipTest ('test not appropriate for {}' .format (self .TYPE ))
527532
528- p = self .Process (target = target or self ._sleep_some )
533+ event = self .Event ()
534+ if not target :
535+ target = self ._sleep_some_event
536+ p = self .Process (target = target , args = (event ,))
529537 p .daemon = True
530538 p .start ()
531539
@@ -543,8 +551,11 @@ def _kill_process(self, meth, target=None):
543551 self .assertTimingAlmostEqual (join .elapsed , 0.0 )
544552 self .assertEqual (p .is_alive (), True )
545553
546- # XXX maybe terminating too soon causes the problems on Gentoo...
547- time .sleep (1 )
554+ timeout = support .SHORT_TIMEOUT
555+ if not event .wait (timeout ):
556+ p .terminate ()
557+ p .join ()
558+ self .fail (f"event not signaled in { timeout } seconds" )
548559
549560 meth (p )
550561
0 commit comments