diff options
author | Benjamin Peterson <benjamin@python.org> | 2010-10-12 22:57:59 (GMT) |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2010-10-12 22:57:59 (GMT) |
commit | 5c4bfc4af070c5c62f76cf3c2d23a19e7c794c4e (patch) | |
tree | bf62941930ba384c45a44d598e24566caa24e070 /Lib | |
parent | 11b1f3dac14f72d7406c96fd7b749ebd8cc16bc9 (diff) | |
download | cpython-5c4bfc4af070c5c62f76cf3c2d23a19e7c794c4e.zip cpython-5c4bfc4af070c5c62f76cf3c2d23a19e7c794c4e.tar.gz cpython-5c4bfc4af070c5c62f76cf3c2d23a19e7c794c4e.tar.bz2 |
prefer clearing global objects to obscure module.__dict__ bugs #10068
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/test/test_module.py | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/Lib/test/test_module.py b/Lib/test/test_module.py index 21ddc9a..7734fb0 100644 --- a/Lib/test/test_module.py +++ b/Lib/test/test_module.py @@ -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 @@ class ModuleTests(unittest.TestCase): {"__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) |