Author: Armin Rigo <ar...@tunes.org>
Branch: 
Changeset: r77170:e0f1bcfbc61b
Date: 2015-05-06 21:26 +0200
http://bitbucket.org/pypy/pypy/changeset/e0f1bcfbc61b/

Log:    Test and fix for gdbm

diff --git a/lib_pypy/gdbm.py b/lib_pypy/gdbm.py
--- a/lib_pypy/gdbm.py
+++ b/lib_pypy/gdbm.py
@@ -112,7 +112,7 @@
 
     def __setitem__(self, key, value):
         self._check_closed()
-        self._size = -1
+        self.size = -1
         r = lib.gdbm_store(self.ll_dbm, _fromstr(key), _fromstr(value),
                            lib.GDBM_REPLACE)
         if r < 0:
@@ -120,6 +120,7 @@
 
     def __delitem__(self, key):
         self._check_closed()
+        self.size = -1
         res = lib.gdbm_delete(self.ll_dbm, _fromstr(key))
         if res < 0:
             raise KeyError(key)
diff --git a/pypy/module/test_lib_pypy/test_gdbm_extra.py 
b/pypy/module/test_lib_pypy/test_gdbm_extra.py
new file mode 100644
--- /dev/null
+++ b/pypy/module/test_lib_pypy/test_gdbm_extra.py
@@ -0,0 +1,17 @@
+from __future__ import absolute_import
+import py
+from rpython.tool.udir import udir
+try:
+    from lib_pypy import gdbm
+except ImportError, e:
+    py.test.skip(e)
+
+def test_len():
+    path = str(udir.join('test_gdbm_extra'))
+    g = gdbm.open(path, 'c')
+    g['abc'] = 'def'
+    assert len(g) == 1
+    g['bcd'] = 'efg'
+    assert len(g) == 2
+    del g['abc']
+    assert len(g) == 1
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to