[Python-checkins] cpython: Issue #13084: Fix a test_signal failure: the delivery order is only defined for

charles-francois.natali python-checkins at python.org
Sun Oct 2 18:33:35 CEST 2011


http://hg.python.org/cpython/rev/e4f4272479d0
changeset:   72583:e4f4272479d0
user:        Charles-François Natali <neologix at free.fr>
date:        Sun Oct 02 18:36:05 2011 +0200
summary:
  Issue #13084: Fix a test_signal failure: the delivery order is only defined for
real-time signals.

files:
  Lib/test/test_signal.py |  14 ++++++--------
  1 files changed, 6 insertions(+), 8 deletions(-)


diff --git a/Lib/test/test_signal.py b/Lib/test/test_signal.py
--- a/Lib/test/test_signal.py
+++ b/Lib/test/test_signal.py
@@ -224,7 +224,7 @@
 
 @unittest.skipIf(sys.platform == "win32", "Not valid on Windows")
 class WakeupSignalTests(unittest.TestCase):
-    def check_wakeup(self, test_body, *signals):
+    def check_wakeup(self, test_body, *signals, ordered=True):
         # use a subprocess to have only one thread
         code = """if 1:
         import fcntl
@@ -240,6 +240,9 @@
         def check_signum(signals):
             data = os.read(read, len(signals)+1)
             raised = struct.unpack('%uB' % len(data), data)
+            if not {!r}:
+                raised = set(raised)
+                signals = set(signals)
             if raised != signals:
                 raise Exception("%r != %r" % (raised, signals))
 
@@ -258,7 +261,7 @@
 
         os.close(read)
         os.close(write)
-        """.format(signals, test_body)
+        """.format(signals, ordered, test_body)
 
         assert_python_ok('-c', code)
 
@@ -319,11 +322,6 @@
     @unittest.skipUnless(hasattr(signal, 'pthread_sigmask'),
                          'need signal.pthread_sigmask()')
     def test_pending(self):
-        signals = (signal.SIGUSR1, signal.SIGUSR2)
-        # when signals are unblocked, pending signal ared delivered in the
-        # reverse order of their number
-        signals = tuple(sorted(signals, reverse=True))
-
         self.check_wakeup("""def test():
             signum1 = signal.SIGUSR1
             signum2 = signal.SIGUSR2
@@ -336,7 +334,7 @@
             os.kill(os.getpid(), signum2)
             # Unblocking the 2 signals calls the C signal handler twice
             signal.pthread_sigmask(signal.SIG_UNBLOCK, (signum1, signum2))
-        """,  *signals)
+        """,  signal.SIGUSR1, signal.SIGUSR2, ordered=False)
 
 
 @unittest.skipIf(sys.platform == "win32", "Not valid on Windows")

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list