Merged revisions 85392 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r85392 | benjamin.peterson | 2010-10-12 17:57:59 -0500 (Tue, 12 Oct 2010) | 1 line

  prefer clearing global objects to obscure module.__dict__ bugs #10068
........
This commit is contained in:
Benjamin Peterson 2010-10-12 23:06:22 +00:00
parent 93f5cd42e7
commit 582162e42b
4 changed files with 27 additions and 5 deletions

View file

@ -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)