summaryrefslogtreecommitdiff
path: root/Lib/test/test_module.py
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2010-10-12 23:02:35 +0000
committerBenjamin Peterson <benjamin@python.org>2010-10-12 23:02:35 +0000
commitdc9542435b92ce224c1a5878bd49ae21db228e5e (patch)
treeb79c9978096bbb089d3c32f99bf241d4b453099d /Lib/test/test_module.py
parentd2f6ae63cd546d84310324012740425772e83de7 (diff)
downloadcpython-git-dc9542435b92ce224c1a5878bd49ae21db228e5e.tar.gz
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 ........
Diffstat (limited to 'Lib/test/test_module.py')
-rw-r--r--Lib/test/test_module.py17
1 files changed, 16 insertions, 1 deletions
diff --git a/Lib/test/test_module.py b/Lib/test/test_module.py
index 638f55bcfd..5605e3c5af 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.test_support import run_unittest
+from test.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)