Try to get this test to be more stable:

* disable gc during the test run because we are spawning objects and there
   was an exception when calling Popen.__del__
 * Always set an alarm handler so the process doesn't exit if the test fails
   (should probably add assertions on the value of hndl_called in more places)
 * Using a negative time causes Linux to treat it as zero, so disable that test.
This commit is contained in:
Neal Norwitz 2008-03-25 07:00:39 +00:00
parent be9160b035
commit bb89e686e3

View file

@ -1,6 +1,7 @@
import unittest
from test import test_support
from contextlib import closing, nested
import gc
import pickle
import select
import signal
@ -30,6 +31,14 @@ def exit_subprocess():
class InterProcessSignalTests(unittest.TestCase):
MAX_DURATION = 20 # Entire test should last at most 20 sec.
def setUp(self):
self.using_gc = gc.isenabled()
gc.disable()
def tearDown(self):
if self.using_gc:
gc.enable()
def handlerA(self, *args):
self.a_called = True
if test_support.verbose:
@ -263,8 +272,10 @@ class ItimerTest(unittest.TestCase):
self.hndl_called = False
self.hndl_count = 0
self.itimer = None
self.old_alarm = signal.signal(signal.SIGALRM, self.sig_alrm)
def tearDown(self):
signal.signal(signal.SIGALRM, self.old_alarm)
if self.itimer is not None: # test_itimer_exc doesn't change this attr
# just ensure that itimer is stopped
signal.setitimer(self.itimer, 0)
@ -303,13 +314,13 @@ class ItimerTest(unittest.TestCase):
# XXX I'm assuming -1 is an invalid itimer, but maybe some platform
# defines it ?
self.assertRaises(signal.ItimerError, signal.setitimer, -1, 0)
# negative time
self.assertRaises(signal.ItimerError, signal.setitimer,
signal.ITIMER_REAL, -1)
# Negative times are treated as zero on some platforms.
if 0:
self.assertRaises(signal.ItimerError,
signal.setitimer, signal.ITIMER_REAL, -1)
def test_itimer_real(self):
self.itimer = signal.ITIMER_REAL
signal.signal(signal.SIGALRM, self.sig_alrm)
signal.setitimer(self.itimer, 1.0)
if test_support.verbose:
print("\ncall pause()...")