summaryrefslogtreecommitdiffstats
path: root/Lib/bsddb/test
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2007-11-05 19:43:04 (GMT)
committerGuido van Rossum <guido@python.org>2007-11-05 19:43:04 (GMT)
commit7767711f543b39a5a5e2e377e0eee33a0e50f700 (patch)
tree67a05ffaba8f500e48ccf16d451a7999576ea5da /Lib/bsddb/test
parentc4cb3b8aa14540f730f82f64add243d6ba8b6fcd (diff)
downloadcpython-7767711f543b39a5a5e2e377e0eee33a0e50f700.zip
cpython-7767711f543b39a5a5e2e377e0eee33a0e50f700.tar.gz
cpython-7767711f543b39a5a5e2e377e0eee33a0e50f700.tar.bz2
Merged revisions 58817-58861 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r58822 | brett.cannon | 2007-11-02 23:47:02 -0700 (Fri, 02 Nov 2007) | 2 lines Add a missing quotation mark. ........ r58840 | skip.montanaro | 2007-11-04 07:56:52 -0800 (Sun, 04 Nov 2007) | 2 lines Note change to get_dialect semantics in 2.5. Will backport to 2.5. ........ r58844 | georg.brandl | 2007-11-04 09:43:49 -0800 (Sun, 04 Nov 2007) | 2 lines Fix syntax for versionchanged markup. ........ r58850 | gregory.p.smith | 2007-11-04 18:32:26 -0800 (Sun, 04 Nov 2007) | 9 lines Fixes bug 477182 on pybsddb.sf.net. DB objects now load the flags and pay attention to them when opening an existing database. This means that d[] behaves properly even on databases previously created with DB_DUP or DB_DUPSORT flags to allow duplicate keys. http://sourceforge.net/tracker/index.php?func=detail&aid=477182&group_id=13900&atid=113900 Do not backport, this bugfix could be considered an API change. ........ r58851 | gregory.p.smith | 2007-11-04 18:56:31 -0800 (Sun, 04 Nov 2007) | 3 lines Add the bsddb.db.DBEnv.lock_id_free method. Improve test_lock's tempdir creation and cleanup. ........ r58852 | gregory.p.smith | 2007-11-05 01:06:28 -0800 (Mon, 05 Nov 2007) | 3 lines * db->get_types is only available in BerkeleyDB >= 4.2 * get compiling with older versions of python again for a stand alone release. ........ r58853 | gregory.p.smith | 2007-11-05 01:07:40 -0800 (Mon, 05 Nov 2007) | 2 lines * db->get_flags is only available in BerkeleyDB >= 4.2 ........ r58854 | mark.summerfield | 2007-11-05 01:22:48 -0800 (Mon, 05 Nov 2007) | 3 lines Added cross-references between the various archive file formats. ........ r58857 | mark.summerfield | 2007-11-05 06:38:50 -0800 (Mon, 05 Nov 2007) | 5 lines Clarified the fact that you can have comments for individual archive members even though comments to the archive itself aren't currently supported. ........
Diffstat (limited to 'Lib/bsddb/test')
-rw-r--r--Lib/bsddb/test/test_lock.py15
-rw-r--r--Lib/bsddb/test/test_misc.py28
2 files changed, 37 insertions, 6 deletions
diff --git a/Lib/bsddb/test/test_lock.py b/Lib/bsddb/test/test_lock.py
index fcab283..bbd88bd 100644
--- a/Lib/bsddb/test/test_lock.py
+++ b/Lib/bsddb/test/test_lock.py
@@ -2,11 +2,12 @@
TestCases for testing the locking sub-system.
"""
+import os
+from pprint import pprint
import shutil
-import sys, os
+import sys
import tempfile
import time
-from pprint import pprint
try:
from threading import Thread, currentThread
@@ -31,10 +32,10 @@ except ImportError:
class LockingTestCase(unittest.TestCase):
def setUp(self):
- self.homeDir = tempfile.mkdtemp()
+ self.homeDir = tempfile.mkdtemp('.test_lock')
self.env = db.DBEnv()
self.env.open(self.homeDir, db.DB_THREAD | db.DB_INIT_MPOOL |
- db.DB_INIT_LOCK | db.DB_CREATE)
+ db.DB_INIT_LOCK | db.DB_CREATE)
def tearDown(self):
@@ -57,8 +58,8 @@ class LockingTestCase(unittest.TestCase):
self.env.lock_put(lock)
if verbose:
print("Released lock: %s" % lock)
-
-
+ if db.version() >= (4,0):
+ self.env.lock_id_free(anID)
def test02_threaded(self):
@@ -119,6 +120,8 @@ class LockingTestCase(unittest.TestCase):
self.env.lock_put(lock)
if verbose:
print("%s: Released %s lock: %s" % (name, lt, lock))
+ if db.version() >= (4,0):
+ self.env.lock_id_free(anID)
#----------------------------------------------------------------------
diff --git a/Lib/bsddb/test/test_misc.py b/Lib/bsddb/test/test_misc.py
index b3248ce..b7a6710 100644
--- a/Lib/bsddb/test/test_misc.py
+++ b/Lib/bsddb/test/test_misc.py
@@ -85,6 +85,34 @@ class MiscTestCase(unittest.TestCase):
db1.close()
os.unlink(self.filename)
+ def test_DB_set_flags_persists(self):
+ if db.version() < (4,2):
+ # The get_flags API required for this to work is only available
+ # in BerkeleyDB >= 4.2
+ return
+ try:
+ db1 = db.DB()
+ db1.set_flags(db.DB_DUPSORT)
+ db1.open(self.filename, db.DB_HASH, db.DB_CREATE)
+ db1[b'a'] = b'eh'
+ db1[b'a'] = b'A'
+ self.assertEqual([(b'a', b'A')], db1.items())
+ db1.put(b'a', b'Aa')
+ self.assertEqual([(b'a', b'A'), (b'a', b'Aa')], db1.items())
+ db1.close()
+ db1 = db.DB()
+ # no set_flags call, we're testing that it reads and obeys
+ # the flags on open.
+ db1.open(self.filename, db.DB_HASH)
+ self.assertEqual([(b'a', b'A'), (b'a', b'Aa')], db1.items())
+ # if it read the flags right this will replace all values
+ # for key b'a' instead of adding a new one. (as a dict should)
+ db1[b'a'] = b'new A'
+ self.assertEqual([(b'a', b'new A')], db1.items())
+ finally:
+ db1.close()
+ os.unlink(self.filename)
+
#----------------------------------------------------------------------