SF patch [ 545523 ] patch for 514433 bsddb.dbopen (NULL)
closes SF #514433
can now pass 'None' as the filename for the bsddb.*open functions,
and you'll get an in-memory temporary store.
docs are ripped out of the bsddb dbopen man page. Fred may want to
clean them up.
Considering this for 2.2, but not 2.1.
diff --git a/Lib/test/test_bsddb.py b/Lib/test/test_bsddb.py
index 459dd5f..f68acae 100755
--- a/Lib/test/test_bsddb.py
+++ b/Lib/test/test_bsddb.py
@@ -2,19 +2,21 @@
"""Test script for the bsddb C module
Roger E. Masse
"""
-
import os
import bsddb
import dbhash # Just so we know it's imported
import tempfile
from test_support import verbose, verify
-def test(openmethod, what):
+def test(openmethod, what, ondisk=1):
if verbose:
- print '\nTesting: ', what
+ print '\nTesting: ', what, (ondisk and "on disk" or "in memory")
- fname = tempfile.mktemp()
+ if ondisk:
+ fname = tempfile.mktemp()
+ else:
+ fname = None
f = openmethod(fname, 'c')
verify(f.keys() == [])
if verbose:
@@ -47,30 +49,35 @@
f.sync()
f.close()
- if verbose:
- print 'modification...'
- f = openmethod(fname, 'w')
- f['d'] = 'discovered'
-
- if verbose:
- print 'access...'
- for key in f.keys():
- word = f[key]
+ if ondisk:
+ # if we're using an in-memory only db, we can't reopen it
+ # so finish here.
if verbose:
- print word
+ print 'modification...'
+ f = openmethod(fname, 'w')
+ f['d'] = 'discovered'
- f.close()
- try:
- os.remove(fname)
- except os.error:
- pass
+ if verbose:
+ print 'access...'
+ for key in f.keys():
+ word = f[key]
+ if verbose:
+ print word
+
+ f.close()
+ try:
+ os.remove(fname)
+ except os.error:
+ pass
types = [(bsddb.btopen, 'BTree'),
(bsddb.hashopen, 'Hash Table'),
+ (bsddb.btopen, 'BTree', 0),
+ (bsddb.hashopen, 'Hash Table', 0),
# (bsddb.rnopen,'Record Numbers'), 'put' for RECNO for bsddb 1.85
# appears broken... at least on
# Solaris Intel - rmasse 1/97
]
for type in types:
- test(type[0], type[1])
+ test(*type)