[Python-checkins] r61870 - python/trunk/Lib/test/test_signal.py

neal.norwitz python-checkins at python.org
Tue Mar 25 08:00:40 CET 2008


Author: neal.norwitz
Date: Tue Mar 25 08:00:39 2008
New Revision: 61870

Modified:
   python/trunk/Lib/test/test_signal.py
Log:
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.


Modified: python/trunk/Lib/test/test_signal.py
==============================================================================
--- python/trunk/Lib/test/test_signal.py	(original)
+++ python/trunk/Lib/test/test_signal.py	Tue Mar 25 08:00:39 2008
@@ -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 @@
 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 @@
         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 @@
         # 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()...")


More information about the Python-checkins mailing list