https://github.com/python/cpython/commit/425f24e4fad672c211307a9f0018c8d39c4db9de
commit: 425f24e4fad672c211307a9f0018c8d39c4db9de
branch: main
author: Duane Griffin <[email protected]>
committer: gpshead <[email protected]>
date: 2025-11-23T15:37:15-08:00
summary:
gh-135335: Simplify preload regression test using __main__ (GH-138686)
Simplify preload regression test using `__main__`
With the fix for gh-126631 `__main__` modules can be preloaded and the
regression
test for gh-135335 can be simplified to just use a self-contained script rather
than requiring a module.
Note this assumes and implicitly tests that `__main__` is preloaded by default.
files:
M Lib/test/_test_multiprocessing.py
M Lib/test/mp_preload_flush.py
diff --git a/Lib/test/_test_multiprocessing.py
b/Lib/test/_test_multiprocessing.py
index 0f9c5c222250ae..9f8412fe9394eb 100644
--- a/Lib/test/_test_multiprocessing.py
+++ b/Lib/test/_test_multiprocessing.py
@@ -6956,28 +6956,13 @@ def test_std_streams_flushed_after_preload(self):
if multiprocessing.get_start_method() != "forkserver":
self.skipTest("forkserver specific test")
- # Create a test module in the temporary directory on the child's path
- # TODO: This can all be simplified once gh-126631 is fixed and we can
- # use __main__ instead of a module.
- dirname = os.path.join(self._temp_dir, 'preloaded_module')
- init_name = os.path.join(dirname, '__init__.py')
- os.mkdir(dirname)
- with open(init_name, "w") as f:
- cmd = '''if 1:
- import sys
- print('stderr', end='', file=sys.stderr)
- print('stdout', end='', file=sys.stdout)
- '''
- f.write(cmd)
-
name = os.path.join(os.path.dirname(__file__), 'mp_preload_flush.py')
- env = {'PYTHONPATH': self._temp_dir}
- _, out, err = test.support.script_helper.assert_python_ok(name, **env)
+ _, out, err = test.support.script_helper.assert_python_ok(name)
# Check stderr first, as it is more likely to be useful to see in the
# event of a failure.
- self.assertEqual(err.decode().rstrip(), 'stderr')
- self.assertEqual(out.decode().rstrip(), 'stdout')
+ self.assertEqual(err.decode().rstrip(), '__main____mp_main__')
+ self.assertEqual(out.decode().rstrip(), '__main____mp_main__')
class MiscTestCase(unittest.TestCase):
diff --git a/Lib/test/mp_preload_flush.py b/Lib/test/mp_preload_flush.py
index 3501554d366a21..c195a9ef6b26fe 100644
--- a/Lib/test/mp_preload_flush.py
+++ b/Lib/test/mp_preload_flush.py
@@ -1,15 +1,11 @@
import multiprocessing
import sys
-modname = 'preloaded_module'
+print(__name__, end='', file=sys.stderr)
+print(__name__, end='', file=sys.stdout)
if __name__ == '__main__':
- if modname in sys.modules:
- raise AssertionError(f'{modname!r} is not in sys.modules')
multiprocessing.set_start_method('forkserver')
- multiprocessing.set_forkserver_preload([modname])
for _ in range(2):
p = multiprocessing.Process()
p.start()
p.join()
-elif modname not in sys.modules:
- raise AssertionError(f'{modname!r} is not in sys.modules')
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]