]> granicus.if.org Git - python/commitdiff
test_io: check_interrupted_write() now cancels the alarm if ZeroDivisionError
authorVictor Stinner <victor.stinner@gmail.com>
Mon, 15 Jul 2013 17:53:13 +0000 (19:53 +0200)
committerVictor Stinner <victor.stinner@gmail.com>
Mon, 15 Jul 2013 17:53:13 +0000 (19:53 +0200)
exception was not raised.

Before the process was killed by SIGALRM in another random test (1 second later)

Lib/test/test_io.py

index 5fb68b4129a7516177e3043459161a54e7329740..54c016199fd0030563cb5b213ac14616891e7af4 100644 (file)
@@ -3070,15 +3070,18 @@ class SignalsTest(unittest.TestCase):
         try:
             wio = self.io.open(w, **fdopen_kwargs)
             t.start()
-            signal.alarm(1)
             # Fill the pipe enough that the write will be blocking.
             # It will be interrupted by the timer armed above.  Since the
             # other thread has read one byte, the low-level write will
             # return with a successful (partial) result rather than an EINTR.
             # The buffered IO layer must check for pending signal
             # handlers, which in this case will invoke alarm_interrupt().
-            self.assertRaises(ZeroDivisionError,
-                        wio.write, item * (support.PIPE_MAX_SIZE // len(item) + 1))
+            signal.alarm(1)
+            try:
+                self.assertRaises(ZeroDivisionError,
+                            wio.write, item * (support.PIPE_MAX_SIZE // len(item) + 1))
+            finally:
+                signal.alarm(0)
             t.join()
             # We got one byte, get another one and check that it isn't a
             # repeat of the first one.