Author: Maciej Fijalkowski <[email protected]>
Branch: 
Changeset: r71482:c003cd1b188d
Date: 2014-05-13 11:16 +0200
http://bitbucket.org/pypy/pypy/changeset/c003cd1b188d/

Log:    some tests and some fixes

diff --git a/lib-python/2.7/test/test_gdbm.py b/lib-python/2.7/test/test_gdbm.py
--- a/lib-python/2.7/test/test_gdbm.py
+++ b/lib-python/2.7/test/test_gdbm.py
@@ -74,6 +74,18 @@
         size2 = os.path.getsize(filename)
         self.assertTrue(size1 > size2 >= size0)
 
+    def test_sync(self):
+        # check if sync works at all, not sure how to check it
+        self.g = gdbm.open(filename, 'cf')
+        self.g['x'] = 'x' * 10000
+        self.g.sync()
+
+    def test_get_key(self):
+        self.g = gdbm.open(filename, 'cf')
+        self.g['x'] = 'x' * 10000
+        self.g.close()
+        self.g = gdbm.open(filename, 'r')
+        self.assertEquals(self.g['x'], 'x' * 10000)
 
 def test_main():
     run_unittest(TestGdbm)
diff --git a/lib_pypy/gdbm.py b/lib_pypy/gdbm.py
--- a/lib_pypy/gdbm.py
+++ b/lib_pypy/gdbm.py
@@ -29,6 +29,7 @@
 
 datum gdbm_firstkey(void*);
 datum gdbm_nextkey(void*, datum);
+void gdbm_sync(void*);
 
 char* gdbm_strerror(int);
 int gdbm_errno;
@@ -50,7 +51,6 @@
     ll_dbm = None
     
     def __init__(self, filename, iflags, mode):
-        self.size = -1
         res = lib.gdbm_open(filename, 0, iflags, mode, ffi.NULL)
         if not res:
             self._raise_from_errno()
@@ -89,7 +89,7 @@
         drec = lib.gdbm_fetch(self.ll_dbm, _fromstr(key))
         if not drec.dptr:
             raise KeyError(key)
-        res = ffi.string(drec.dptr, drec.size)
+        res = ffi.string(drec.dptr, drec.dsize)
         lib.free(drec.dptr)
         return res
 
@@ -131,6 +131,10 @@
 
     __del__ = close
 
+    def sync(self):
+        self._check_closed()
+        lib.gdbm_sync(self.ll_dbm)
+
 def open(filename, flags='r', mode=0666):
     if flags[0] == 'r':
         iflags = lib.GDBM_READER
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to