mirror of
https://github.com/python/cpython.git
synced 2025-07-24 11:44:31 +00:00
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:
parent
93f5cd42e7
commit
582162e42b
4 changed files with 27 additions and 5 deletions
|
@ -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)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue