Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[3.11] gh-108388: Split test_multiprocessing_spawn (GH-108396) #109688

Merged
merged 1 commit into from
Sep 21, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion Lib/test/_test_multiprocessing.py
Original file line number Diff line number Diff line change
Expand Up @@ -6080,7 +6080,8 @@ class ThreadsMixin(BaseMixin):
# 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'}
Expand All @@ -6093,6 +6094,10 @@ def install_tests_in_module_dict(remote_globs, start_method):
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):
Expand All @@ -6103,6 +6108,9 @@ 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
Expand Down
3 changes: 3 additions & 0 deletions Lib/test/libregrtest/runtest.py
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,9 @@ def set_env_changed(self):
SPLITTESTDIRS = {
"test_asyncio",
"test_future_stmt",
"test_multiprocessing_fork",
"test_multiprocessing_forkserver",
"test_multiprocessing_spawn",
}

# Storage of uncollectable objects
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import unittest
import test._test_multiprocessing

import os.path
import sys
import unittest
from test import support

if support.PGO:
Expand All @@ -13,7 +12,5 @@
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)
7 changes: 7 additions & 0 deletions Lib/test/test_multiprocessing_fork/test_manager.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
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()
7 changes: 7 additions & 0 deletions Lib/test/test_multiprocessing_fork/test_misc.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
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()
7 changes: 7 additions & 0 deletions Lib/test/test_multiprocessing_fork/test_processes.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
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()
7 changes: 7 additions & 0 deletions Lib/test/test_multiprocessing_fork/test_threads.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
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()
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import unittest
import test._test_multiprocessing

import os.path
import sys
import unittest
from test import support

if support.PGO:
Expand All @@ -10,7 +9,5 @@
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)
7 changes: 7 additions & 0 deletions Lib/test/test_multiprocessing_forkserver/test_manager.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
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()
7 changes: 7 additions & 0 deletions Lib/test/test_multiprocessing_forkserver/test_misc.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
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()
7 changes: 7 additions & 0 deletions Lib/test/test_multiprocessing_forkserver/test_processes.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
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()
7 changes: 7 additions & 0 deletions Lib/test/test_multiprocessing_forkserver/test_threads.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
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()
12 changes: 0 additions & 12 deletions Lib/test/test_multiprocessing_spawn.py

This file was deleted.

9 changes: 9 additions & 0 deletions Lib/test/test_multiprocessing_spawn/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
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)
7 changes: 7 additions & 0 deletions Lib/test/test_multiprocessing_spawn/test_manager.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
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()
7 changes: 7 additions & 0 deletions Lib/test/test_multiprocessing_spawn/test_misc.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
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()
7 changes: 7 additions & 0 deletions Lib/test/test_multiprocessing_spawn/test_processes.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
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()
7 changes: 7 additions & 0 deletions Lib/test/test_multiprocessing_spawn/test_threads.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
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()
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
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.
Loading