diff options
author | Richard Oudkerk <shibturn@gmail.com> | 2012-08-14 11:41:19 +0100 |
---|---|---|
committer | Richard Oudkerk <shibturn@gmail.com> | 2012-08-14 11:41:19 +0100 |
commit | faee75c33af1e8ccbf0d4349efe62dc9637779c6 (patch) | |
tree | ccb94112923dcfb68edc2f7550c536c816396b0c /Lib/test/test_multiprocessing.py | |
parent | fe9efc57327b6306c5b755fae8ad6729484adcd4 (diff) | |
download | cpython-git-faee75c33af1e8ccbf0d4349efe62dc9637779c6.tar.gz |
Issue #15646: Prevent equivalent of a fork bomb when using multiprocessing
on Windows without the "if __name__ == '__main__'" idiom.
Diffstat (limited to 'Lib/test/test_multiprocessing.py')
-rw-r--r-- | Lib/test/test_multiprocessing.py | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/Lib/test/test_multiprocessing.py b/Lib/test/test_multiprocessing.py index bc2c048b68..15870570db 100644 --- a/Lib/test/test_multiprocessing.py +++ b/Lib/test/test_multiprocessing.py @@ -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] # # |