diff Lib/test/test_module.py @ 84936:79e2f5bbc30c

Issue #18214: Improve finalization of Python modules to avoid setting their globals to None, in most cases.
author Antoine Pitrou <solipsis@pitrou.net>
date Wed, 31 Jul 2013 23:14:08 +0200
parents e39a8f8ceb9f
children cdddd3ed2ae1
line wrap: on
line diff
--- a/Lib/test/test_module.py	Wed Jul 31 21:54:18 2013 +0200
+++ b/Lib/test/test_module.py	Wed Jul 31 23:14:08 2013 +0200
@@ -1,6 +1,7 @@
 # Test the module type
 import unittest
 from test.support import run_unittest, gc_collect
+from test.script_helper import assert_python_ok
 
 import sys
 ModuleType = type(sys)
@@ -70,7 +71,6 @@
                "__loader__": None, "__package__": None})
         self.assertTrue(foo.__dict__ is d)
 
-    @unittest.expectedFailure
     def test_dont_clear_dict(self):
         # See issue 7140.
         def f():
@@ -181,6 +181,19 @@
         self.assertEqual(r[:25], "<module 'unittest' from '")
         self.assertEqual(r[-13:], "__init__.py'>")
 
+    def test_module_finalization_at_shutdown(self):
+        # Module globals and builtins should still be available during shutdown
+        rc, out, err = assert_python_ok("-c", "from test import final_a")
+        self.assertFalse(err)
+        lines = out.splitlines()
+        self.assertEqual(set(lines), {
+            b"x = a",
+            b"x = b",
+            b"final_a.x = a",
+            b"final_b.x = b",
+            b"len = len",
+            b"shutil.rmtree = rmtree"})
+
     # frozen and namespace module reprs are tested in importlib.