Mercurial > cpython-lru_cache-weakref
diff Lib/test/test_module.py @ 65231:e2aa3b1d08bc
prefer clearing global objects to obscure module.__dict__ bugs #10068
| author | Benjamin Peterson <benjamin@python.org> |
|---|---|
| date | Tue, 12 Oct 2010 22:57:59 +0000 |
| parents | a0951f11be3d |
| children | 11b09df370e7 c9ae0eb66959 |
line wrap: on
line diff
--- a/Lib/test/test_module.py Tue Oct 12 22:42:37 2010 +0000 +++ b/Lib/test/test_module.py Tue Oct 12 22:57:59 2010 +0000 @@ -1,6 +1,6 @@ # Test the module type import unittest -from test.support import run_unittest +from test.support import run_unittest, gc_collect import sys ModuleType = type(sys) @@ -55,14 +55,29 @@ {"__name__": "foo", "__doc__": "foodoc", "bar": 42}) self.assertTrue(foo.__dict__ is d) + @unittest.expectedFailure def test_dont_clear_dict(self): # See issue 7140. def f(): foo = ModuleType("foo") foo.bar = 4 return foo + gc_collect() self.assertEqual(f().__dict__["bar"], 4) + def test_clear_dict_in_ref_cycle(self): + destroyed = [] + m = ModuleType("foo") + m.destroyed = destroyed + s = """class A: + def __del__(self): + destroyed.append(1) +a = A()""" + exec(s, m.__dict__) + del m + gc_collect() + self.assertEqual(destroyed, [1]) + def test_main(): run_unittest(ModuleTests)
