From: Victor Stinner Date: Mon, 15 Jul 2013 17:53:13 +0000 (+0200) Subject: test_io: check_interrupted_write() now cancels the alarm if ZeroDivisionError X-Git-Tag: v3.4.0a1~202 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=775b2dd778eb3a577076aba634d7f2afb489d63f;p=python test_io: check_interrupted_write() now cancels the alarm if ZeroDivisionError exception was not raised. Before the process was killed by SIGALRM in another random test (1 second later) --- diff --git a/Lib/test/test_io.py b/Lib/test/test_io.py index 5fb68b4129..54c016199f 100644 --- a/Lib/test/test_io.py +++ b/Lib/test/test_io.py @@ -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.