# Functions used to create test cases from the base ones in this module
#
-def install_tests_in_module_dict(remote_globs, start_method):
+def install_tests_in_module_dict(remote_globs, start_method,
+ only_type=None, exclude_types=False):
__module__ = remote_globs['__name__']
local_globs = globals()
ALL_TYPES = {'processes', 'threads', 'manager'}
continue
assert set(base.ALLOWED_TYPES) <= ALL_TYPES, base.ALLOWED_TYPES
for type_ in base.ALLOWED_TYPES:
+ if only_type and type_ != only_type:
+ continue
+ if exclude_types:
+ continue
newname = 'With' + type_.capitalize() + name[1:]
Mixin = local_globs[type_.capitalize() + 'Mixin']
class Temp(base, Mixin, unittest.TestCase):
Temp.__module__ = __module__
remote_globs[newname] = Temp
elif issubclass(base, unittest.TestCase):
+ if only_type:
+ continue
+
class Temp(base, object):
pass
Temp.__name__ = Temp.__qualname__ = name
SPLITTESTDIRS = {
"test_asyncio",
"test_future_stmt",
+ "test_multiprocessing_fork",
+ "test_multiprocessing_forkserver",
+ "test_multiprocessing_spawn",
}
# Storage of uncollectable objects
-import unittest
-import test._test_multiprocessing
-
+import os.path
import sys
+import unittest
from test import support
if support.PGO:
if sys.platform == 'darwin':
raise unittest.SkipTest("test may crash on macOS (bpo-33725)")
-test._test_multiprocessing.install_tests_in_module_dict(globals(), 'fork')
-
-if __name__ == '__main__':
- unittest.main()
+def load_tests(*args):
+ return support.load_package_tests(os.path.dirname(__file__), *args)
--- /dev/null
+import unittest
+from test._test_multiprocessing import install_tests_in_module_dict
+
+install_tests_in_module_dict(globals(), 'fork', only_type="manager")
+
+if __name__ == '__main__':
+ unittest.main()
--- /dev/null
+import unittest
+from test._test_multiprocessing import install_tests_in_module_dict
+
+install_tests_in_module_dict(globals(), 'fork', exclude_types=True)
+
+if __name__ == '__main__':
+ unittest.main()
--- /dev/null
+import unittest
+from test._test_multiprocessing import install_tests_in_module_dict
+
+install_tests_in_module_dict(globals(), 'fork', only_type="processes")
+
+if __name__ == '__main__':
+ unittest.main()
--- /dev/null
+import unittest
+from test._test_multiprocessing import install_tests_in_module_dict
+
+install_tests_in_module_dict(globals(), 'fork', only_type="threads")
+
+if __name__ == '__main__':
+ unittest.main()
-import unittest
-import test._test_multiprocessing
-
+import os.path
import sys
+import unittest
from test import support
if support.PGO:
if sys.platform == "win32":
raise unittest.SkipTest("forkserver is not available on Windows")
-test._test_multiprocessing.install_tests_in_module_dict(globals(), 'forkserver')
-
-if __name__ == '__main__':
- unittest.main()
+def load_tests(*args):
+ return support.load_package_tests(os.path.dirname(__file__), *args)
--- /dev/null
+import unittest
+from test._test_multiprocessing import install_tests_in_module_dict
+
+install_tests_in_module_dict(globals(), 'forkserver', only_type="manager")
+
+if __name__ == '__main__':
+ unittest.main()
--- /dev/null
+import unittest
+from test._test_multiprocessing import install_tests_in_module_dict
+
+install_tests_in_module_dict(globals(), 'forkserver', exclude_types=True)
+
+if __name__ == '__main__':
+ unittest.main()
--- /dev/null
+import unittest
+from test._test_multiprocessing import install_tests_in_module_dict
+
+install_tests_in_module_dict(globals(), 'forkserver', only_type="processes")
+
+if __name__ == '__main__':
+ unittest.main()
--- /dev/null
+import unittest
+from test._test_multiprocessing import install_tests_in_module_dict
+
+install_tests_in_module_dict(globals(), 'forkserver', only_type="threads")
+
+if __name__ == '__main__':
+ unittest.main()
+++ /dev/null
-import unittest
-import test._test_multiprocessing
-
-from test import support
-
-if support.PGO:
- raise unittest.SkipTest("test is not helpful for PGO")
-
-test._test_multiprocessing.install_tests_in_module_dict(globals(), 'spawn')
-
-if __name__ == '__main__':
- unittest.main()
--- /dev/null
+import os.path
+import unittest
+from test import support
+
+if support.PGO:
+ raise unittest.SkipTest("test is not helpful for PGO")
+
+def load_tests(*args):
+ return support.load_package_tests(os.path.dirname(__file__), *args)
--- /dev/null
+import unittest
+from test._test_multiprocessing import install_tests_in_module_dict
+
+install_tests_in_module_dict(globals(), 'spawn', only_type="manager")
+
+if __name__ == '__main__':
+ unittest.main()
--- /dev/null
+import unittest
+from test._test_multiprocessing import install_tests_in_module_dict
+
+install_tests_in_module_dict(globals(), 'spawn', exclude_types=True)
+
+if __name__ == '__main__':
+ unittest.main()
--- /dev/null
+import unittest
+from test._test_multiprocessing import install_tests_in_module_dict
+
+install_tests_in_module_dict(globals(), 'spawn', only_type="processes")
+
+if __name__ == '__main__':
+ unittest.main()
--- /dev/null
+import unittest
+from test._test_multiprocessing import install_tests_in_module_dict
+
+install_tests_in_module_dict(globals(), 'spawn', only_type="threads")
+
+if __name__ == '__main__':
+ unittest.main()
--- /dev/null
+Split test_multiprocessing_fork, test_multiprocessing_forkserver and
+test_multiprocessing_spawn into test packages. Each package is made of 4
+sub-tests: processes, threads, manager and misc. It allows running more tests
+in parallel and so reduce the total test duration. Patch by Victor Stinner.