diff options
author | Charles-François Natali <neologix@free.fr> | 2011-12-20 10:47:23 (GMT) |
---|---|---|
committer | Charles-François Natali <neologix@free.fr> | 2011-12-20 10:47:23 (GMT) |
commit | 8366b8417b2b2b7aa077e87bc05611014fa1d723 (patch) | |
tree | 41397e1312f4409925b804ac2e8f63915ba6a088 /Lib | |
parent | 5879ca1fd9f17b3f967180874f7ca4169932f556 (diff) | |
download | cpython-8366b8417b2b2b7aa077e87bc05611014fa1d723.zip cpython-8366b8417b2b2b7aa077e87bc05611014fa1d723.tar.gz cpython-8366b8417b2b2b7aa077e87bc05611014fa1d723.tar.bz2 |
Followup to issue #11867: Use socketpair(), since FreeBSD < 8 doesn't really
support multiprocessing.Event.
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/test/test_mailbox.py | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/Lib/test/test_mailbox.py b/Lib/test/test_mailbox.py index 9fdcbde..a68686e 100644 --- a/Lib/test/test_mailbox.py +++ b/Lib/test/test_mailbox.py @@ -15,10 +15,6 @@ try: import fcntl except ImportError: pass -try: - import multiprocessing -except ImportError: - multiprocessing = None # Silence Py3k warning rfc822 = test_support.import_module('rfc822', deprecated=True) @@ -870,12 +866,13 @@ class _TestMboxMMDF(TestMailbox): self._box = self._factory(self._path) @unittest.skipUnless(hasattr(os, 'fork'), "Test needs fork().") - @unittest.skipUnless(multiprocessing, "Test needs multiprocessing.") + @unittest.skipUnless(hasattr(socket, 'socketpair'), "Test needs socketpair().") def test_lock_conflict(self): # Fork off a child process that will lock the mailbox temporarily, # unlock it and exit. - ready = multiprocessing.Event() - done = multiprocessing.Event() + c, p = socket.socketpair() + self.addCleanup(c.close) + self.addCleanup(p.close) pid = os.fork() if pid == 0: @@ -883,22 +880,22 @@ class _TestMboxMMDF(TestMailbox): try: # lock the mailbox, and signal the parent it can proceed self._box.lock() - ready.set() + c.send(b'c') # wait until the parent is done, and unlock the mailbox - done.wait(5) + c.recv(1) self._box.unlock() finally: os._exit(0) # In the parent, wait until the child signals it locked the mailbox. - ready.wait(5) + p.recv(1) try: self.assertRaises(mailbox.ExternalClashError, self._box.lock) finally: # Signal the child it can now release the lock and exit. - done.set() + p.send(b'p') # Wait for child to exit. Locking should now succeed. exited_pid, status = os.waitpid(pid, 0) |