mirror of
https://github.com/python/cpython.git
synced 2025-10-10 00:43:41 +00:00
Merged revisions 80784 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r80784 | ronald.oussoren | 2010-05-05 16:48:37 +0200 (Wed, 05 May 2010) | 9 lines The C function used by uuid.uuid4 is broken on OSX 10.6 in that after os.fork() the parent and child generate the same sequence of UUIDs. This patch falls back to the the Python implementation on OSX 10.6 or later. Fixes issue #8621. ........
This commit is contained in:
parent
177ab08f96
commit
ac764d3d5f
3 changed files with 44 additions and 0 deletions
|
@ -457,6 +457,34 @@ class TestUUID(TestCase):
|
|||
equal(u, uuid.UUID(v))
|
||||
equal(str(u), v)
|
||||
|
||||
def testIssue8621(self):
|
||||
import os
|
||||
import sys
|
||||
if os.name != 'posix':
|
||||
return
|
||||
|
||||
# On at least some versions of OSX uuid.uuid4 generates
|
||||
# the same sequence of UUIDs in the parent and any
|
||||
# children started using fork.
|
||||
fds = os.pipe()
|
||||
pid = os.fork()
|
||||
if pid == 0:
|
||||
os.close(fds[0])
|
||||
value = uuid.uuid4()
|
||||
os.write(fds[1], value.hex.encode('latin1'))
|
||||
os._exit(0)
|
||||
|
||||
else:
|
||||
os.close(fds[1])
|
||||
parent_value = uuid.uuid4().hex
|
||||
os.waitpid(pid, 0)
|
||||
child_value = os.read(fds[0], 100).decode('latin1')
|
||||
|
||||
self.assertNotEqual(parent_value, child_value)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def test_main():
|
||||
support.run_unittest(TestUUID)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue