mirror of
https://github.com/python/cpython.git
synced 2025-12-15 21:44:50 +00:00
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.
This commit is contained in:
parent
0494955b8f
commit
8388895fe4
4 changed files with 43 additions and 26 deletions
|
|
@ -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 @@ def test(openmethod, what):
|
|||
|
||||
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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue