@@ -513,9 +513,14 @@ def _sleep_some(cls):
513
513
time .sleep (100 )
514
514
515
515
@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 ):
517
522
signal .signal (signal .SIGINT , signal .SIG_DFL )
518
- cls ._sleep_some ( )
523
+ cls ._sleep_some_event ( event )
519
524
520
525
@classmethod
521
526
def _test_sleep (cls , delay ):
@@ -525,7 +530,10 @@ def _kill_process(self, meth, target=None):
525
530
if self .TYPE == 'threads' :
526
531
self .skipTest ('test not appropriate for {}' .format (self .TYPE ))
527
532
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 ,))
529
537
p .daemon = True
530
538
p .start ()
531
539
@@ -543,8 +551,11 @@ def _kill_process(self, meth, target=None):
543
551
self .assertTimingAlmostEqual (join .elapsed , 0.0 )
544
552
self .assertEqual (p .is_alive (), True )
545
553
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" )
548
559
549
560
meth (p )
550
561
0 commit comments