#17198: Fix a NameError in the dbm module. Patch by Valentina Mukhamedzhanova.

This commit is contained in:
Ezio Melotti 2013-07-07 13:15:08 +02:00
parent 331c3fd874
commit b08495bbcf
3 changed files with 24 additions and 2 deletions

View File

@ -44,6 +44,11 @@ _modules = {}
error = (error, IOError)
try:
from dbm import ndbm
except ImportError:
ndbm = None
def open(file, flag='r', mode=0o666):
"""Open or create database at path given by *file*.

View File

@ -9,6 +9,11 @@ import test.support
# Skip tests if dbm module doesn't exist.
dbm = test.support.import_module('dbm')
try:
from dbm import ndbm
except ImportError:
ndbm = None
_fname = test.support.TESTFN
#
@ -130,7 +135,7 @@ class WhichDBTestCase(unittest.TestCase):
delete_files()
f = module.open(_fname, 'c')
f.close()
self.assertEqual(name, dbm.whichdb(_fname))
self.assertEqual(name, self.dbm.whichdb(_fname))
# Now add a key
f = module.open(_fname, 'w')
f[b"1"] = b"1"
@ -139,7 +144,15 @@ class WhichDBTestCase(unittest.TestCase):
# and read it
self.assertTrue(f[b"1"] == b"1")
f.close()
self.assertEqual(name, dbm.whichdb(_fname))
self.assertEqual(name, self.dbm.whichdb(_fname))
@unittest.skipUnless(ndbm, reason='Test requires ndbm')
def test_whichdb_ndbm(self):
# Issue 17198: check that ndbm which is referenced in whichdb is defined
db_file = '{}_ndbm.db'.format(_fname)
with open(db_file, 'w'):
self.addCleanup(test.support.unlink, db_file)
self.assertIsNone(self.dbm.whichdb(db_file[:-3]))
def tearDown(self):
delete_files()
@ -149,6 +162,7 @@ class WhichDBTestCase(unittest.TestCase):
self.filename = test.support.TESTFN
self.d = dbm.open(self.filename, 'c')
self.d.close()
self.dbm = test.support.import_fresh_module('dbm')
def test_keys(self):
self.d = dbm.open(self.filename, 'c')

View File

@ -41,6 +41,9 @@ Core and Builtins
Library
-------
- Issue #17198: Fix a NameError in the dbm module. Patch by Valentina
Mukhamedzhanova.
- Issue #18013: Fix cgi.FieldStorage to parse the W3C sample form.
- Issue #18347: ElementTree's html serializer now preserves the case of