From: Jeffrey Yasskin Date: Fri, 4 Apr 2008 04:51:19 +0000 (+0000) Subject: Doh! os.read() raises an OSError, not an IOError when it's interrupted. X-Git-Tag: v2.6a3~285 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2b860db35c5346c216672f94031ecc800dbebf02;p=python Doh! os.read() raises an OSError, not an IOError when it's interrupted. And fix some flakiness in test_itimer_prof, which could detect that the timer had reached 0 before the signal arrived announcing that fact. --- diff --git a/Lib/test/test_signal.py b/Lib/test/test_signal.py index acb8e5784b..dea518aca1 100644 --- a/Lib/test/test_signal.py +++ b/Lib/test/test_signal.py @@ -31,7 +31,7 @@ def exit_subprocess(): def ignoring_eintr(__func, *args, **kwargs): try: return __func(*args, **kwargs) - except IOError as e: + except EnvironmentError as e: if e.errno != signal.EINTR: raise return None @@ -363,12 +363,15 @@ class ItimerTest(unittest.TestCase): def test_itimer_prof(self): self.itimer = signal.ITIMER_PROF signal.signal(signal.SIGPROF, self.sig_prof) - signal.setitimer(self.itimer, 0.2) + signal.setitimer(self.itimer, 0.2, 0.2) for i in xrange(100000000): if signal.getitimer(self.itimer) == (0.0, 0.0): break # sig_prof handler stopped this itimer + # profiling itimer should be (0.0, 0.0) now + self.assertEquals(signal.getitimer(self.itimer), (0.0, 0.0)) + # and the handler should have been called self.assertEqual(self.hndl_called, True) def test_main():