Issue #15646: Prevent equivalent of a fork bomb when using multiprocessing

on Windows without the "if __name__ == '__main__'" idiom.
This commit is contained in:
Richard Oudkerk 2012-08-14 11:41:32 +01:00
parent 296d1bea6a
commit e88a2445bc
4 changed files with 40 additions and 2 deletions

View file

@ -18,6 +18,7 @@ import socket
import random
import logging
import test.support
import test.script_helper
# Skip tests if _multiprocessing wasn't built.
@ -2429,9 +2430,29 @@ 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, TestInvalidFamily,
TestTimeouts]
TestTimeouts, TestNoForkBomb]
#
#