[pypy-commit] pypy default: A failing test about weak key dictionaries.

arigo noreply at buildbot.pypy.org
Wed May 9 21:21:29 CEST 2012


Author: Armin Rigo <arigo at tunes.org>
Branch: 
Changeset: r54993:e37769dd2e8e
Date: 2012-05-09 20:13 +0200
http://bitbucket.org/pypy/pypy/changeset/e37769dd2e8e/

Log:	A failing test about weak key dictionaries.

diff --git a/pypy/rlib/test/test_rweakkeydict.py b/pypy/rlib/test/test_rweakkeydict.py
--- a/pypy/rlib/test/test_rweakkeydict.py
+++ b/pypy/rlib/test/test_rweakkeydict.py
@@ -135,3 +135,31 @@
             d = RWeakKeyDictionary(KX, VY)
         d.set(KX(), VX())
     py.test.raises(Exception, interpret, g, [1])
+
+
+def test_rpython_free_values():
+    class VXDel:
+        def __del__(self):
+            state.freed.append(1)
+    class State:
+        pass
+    state = State()
+    state.freed = []
+    #
+    def add_me():
+        k = KX()
+        v = VXDel()
+        d = RWeakKeyDictionary(KX, VXDel)
+        d.set(k, v)
+        return d
+    def f():
+        del state.freed[:]
+        d = add_me()
+        rgc.collect()
+        # we want the dictionary to be really empty here.  It's hard to
+        # ensure in the current implementation after just one collect(),
+        # but at least two collects should be enough.
+        rgc.collect()
+        return len(state.freed)
+    assert f() == 1
+    assert interpret(f, []) == 1


More information about the pypy-commit mailing list