mirror of
https://github.com/python/cpython.git
synced 2025-09-20 15:40:32 +00:00
Issue #15646: Prevent equivalent of a fork bomb when using multiprocessing
on Windows without the "if __name__ == '__main__'" idiom.
This commit is contained in:
parent
fe9efc5732
commit
faee75c33a
4 changed files with 43 additions and 2 deletions
|
@ -16,6 +16,7 @@ import socket
|
|||
import random
|
||||
import logging
|
||||
import errno
|
||||
import test.script_helper
|
||||
from test import test_support
|
||||
from StringIO import StringIO
|
||||
_multiprocessing = test_support.import_module('_multiprocessing')
|
||||
|
@ -2349,8 +2350,28 @@ class TestTimeouts(unittest.TestCase):
|
|||
finally:
|
||||
socket.setdefaulttimeout(old_timeout)
|
||||
|
||||
#
|
||||
# Test what happens with no "if __name__ == '__main__'"
|
||||
#
|
||||
|
||||
class TestNoForkBomb(unittest.TestCase):
|
||||
def test_noforkbomb(self):
|
||||
name = os.path.join(os.path.dirname(__file__), 'mp_fork_bomb.py')
|
||||
if WIN32:
|
||||
rc, out, err = test.script_helper.assert_python_failure(name)
|
||||
self.assertEqual('', out.decode('ascii'))
|
||||
self.assertIn('RuntimeError', err.decode('ascii'))
|
||||
else:
|
||||
rc, out, err = test.script_helper.assert_python_ok(name)
|
||||
self.assertEqual('123', out.decode('ascii').rstrip())
|
||||
self.assertEqual('', err.decode('ascii'))
|
||||
|
||||
#
|
||||
#
|
||||
#
|
||||
|
||||
testcases_other = [OtherTest, TestInvalidHandle, TestInitializers,
|
||||
TestStdinBadfiledescriptor, TestTimeouts]
|
||||
TestStdinBadfiledescriptor, TestTimeouts, TestNoForkBomb]
|
||||
|
||||
#
|
||||
#
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue