]> granicus.if.org Git - python/commitdiff
Closes bug #1149413
authorGregory P. Smith <greg@mad-scientist.com>
Wed, 12 Apr 2006 20:16:56 +0000 (20:16 +0000)
committerGregory P. Smith <greg@mad-scientist.com>
Wed, 12 Apr 2006 20:16:56 +0000 (20:16 +0000)
Using None for a filename with the 'n' flag when calling bsddb.btopen
would cause an error while checking if the file None existed.  error
not likely to be seen as anyone using None for a filename would likely
use the 'c' flag in the first place.

Lib/bsddb/__init__.py
Lib/test/test_bsddb.py

index d3ee773cecea15b3d32ddf5f3d54adfab2e798d9..68f10329e56d6022f7475643354f281c1bbddb4c 100644 (file)
@@ -358,7 +358,7 @@ def _checkflag(flag, file):
         #flags = db.DB_CREATE | db.DB_TRUNCATE
         # we used db.DB_TRUNCATE flag for this before but BerkeleyDB
         # 4.2.52 changed to disallowed truncate with txn environments.
-        if os.path.isfile(file):
+        if file is not None and os.path.isfile(file):
             os.unlink(file)
     else:
         raise error, "flags should be one of 'r', 'w', 'c' or 'n'"
index 1ec48010491cbf59ceaf7e5297e74eb1117698c3..7a0c97c1722ad2b4cac4bf912be16f82702f7242 100755 (executable)
@@ -11,9 +11,10 @@ from test import test_support
 from sets import Set
 
 class TestBSDDB(unittest.TestCase):
+    openflag = 'c'
 
     def setUp(self):
-        self.f = self.openmethod[0](self.fname, 'c')
+        self.f = self.openmethod[0](self.fname, self.openflag)
         self.d = dict(q='Guido', w='van', e='Rossum', r='invented', t='Python', y='')
         for k, v in self.d.iteritems():
             self.f[k] = v
@@ -267,6 +268,11 @@ class TestBTree_InMemory(TestBSDDB):
     fname = None
     openmethod = [bsddb.btopen]
 
+class TestBTree_InMemory_Truncate(TestBSDDB):
+    fname = None
+    openflag = 'n'
+    openmethod = [bsddb.btopen]
+
 class TestHashTable(TestBSDDB):
     fname = test_support.TESTFN
     openmethod = [bsddb.hashopen]
@@ -285,6 +291,7 @@ def test_main(verbose=None):
         TestHashTable,
         TestBTree_InMemory,
         TestHashTable_InMemory,
+        TestBTree_InMemory_Truncate,
     )
 
 if __name__ == "__main__":