]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-115490: Work around test.support.interpreters.channels not handling unloading...
authorT. Wouters <thomas@python.org>
Thu, 15 Feb 2024 13:24:13 +0000 (14:24 +0100)
committerGitHub <noreply@github.com>
Thu, 15 Feb 2024 13:24:13 +0000 (14:24 +0100)
Work around test.support.interpreters.channels not handling unloading, which
regrtest does when running tests sequentially, by explicitly skipping the
unloading of test.support.interpreters and its submodules.

This can be rolled back once test.support.interpreters.channels supports
unloading, if we are keeping sequential runs in the same process around.

Lib/test/libregrtest/main.py

index 7ca1b1cb65ae40e9f8fd7b69ca645b0e7379908f..b24c1b9205450bae7fca4c321822b53e9c98e34c 100644 (file)
@@ -335,10 +335,15 @@ class Regrtest:
 
             result = self.run_test(test_name, runtests, tracer)
 
-            # Unload the newly imported test modules (best effort finalization)
+            # Unload the newly imported test modules (best effort
+            # finalization). To work around gh-115490, don't unload
+            # test.support.interpreters and its submodules even if they
+            # weren't loaded before.
+            keep = "test.support.interpreters"
             new_modules = [module for module in sys.modules
                            if module not in save_modules and
-                                module.startswith(("test.", "test_"))]
+                                module.startswith(("test.", "test_"))
+                                and not module.startswith(keep)]
             for module in new_modules:
                 sys.modules.pop(module, None)
                 # Remove the attribute of the parent module.