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)