summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_signal.py
diff options
context:
space:
mode:
authorCharles-François Natali <neologix@free.fr>2011-10-02 16:36:05 (GMT)
committerCharles-François Natali <neologix@free.fr>2011-10-02 16:36:05 (GMT)
commit027f9a3600edf52c78c6cd376f114e0b66ecff62 (patch)
treeac68f597a55f826612245beaf9b57bbd9e7f8356 /Lib/test/test_signal.py
parent6fe679f011094d2cfa455292331071e1d0e35289 (diff)
downloadcpython-027f9a3600edf52c78c6cd376f114e0b66ecff62.zip
cpython-027f9a3600edf52c78c6cd376f114e0b66ecff62.tar.gz
cpython-027f9a3600edf52c78c6cd376f114e0b66ecff62.tar.bz2
Issue #13084: Fix a test_signal failure: the delivery order is only defined for
real-time signals.
Diffstat (limited to 'Lib/test/test_signal.py')
-rw-r--r--Lib/test/test_signal.py14
1 files changed, 6 insertions, 8 deletions
diff --git a/Lib/test/test_signal.py b/Lib/test/test_signal.py
index c349252..fdeb4c2 100644
--- a/Lib/test/test_signal.py
+++ b/Lib/test/test_signal.py
@@ -224,7 +224,7 @@ class WindowsSignalTests(unittest.TestCase):
@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 @@ class WakeupSignalTests(unittest.TestCase):
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 @@ class WakeupSignalTests(unittest.TestCase):
os.close(read)
os.close(write)
- """.format(signals, test_body)
+ """.format(signals, ordered, test_body)
assert_python_ok('-c', code)
@@ -319,11 +322,6 @@ class WakeupSignalTests(unittest.TestCase):
@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 @@ class WakeupSignalTests(unittest.TestCase):
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")