bpo-31026: Fix test_dbm if dbm.ndbm is build with Berkeley DB. (GH-6632)

This commit is contained in:
Serhiy Storchaka 2018-04-29 15:45:03 +03:00 committed by GitHub
parent 2e38cc3933
commit 70af06cdc4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 29 additions and 2 deletions

View File

@ -38,8 +38,7 @@ def delete_files():
class AnyDBMTestCase:
_dict = {'0': b'',
'a': b'Python:',
_dict = {'a': b'Python:',
'b': b'Programming',
'c': b'the',
'd': b'way',
@ -109,6 +108,20 @@ class AnyDBMTestCase:
keys = self.keys_helper(f)
f.close()
def test_empty_value(self):
if getattr(dbm._defaultmod, 'library', None) == 'Berkeley DB':
self.skipTest("Berkeley DB doesn't distinguish the empty value "
"from the absent one")
f = dbm.open(_fname, 'c')
self.assertEqual(f.keys(), [])
f[b'empty'] = b''
self.assertEqual(f.keys(), [b'empty'])
self.assertIn(b'empty', f)
self.assertEqual(f[b'empty'], b'')
self.assertEqual(f.get(b'empty'), b'')
self.assertEqual(f.setdefault(b'empty'), b'')
f.close()
def test_anydbm_access(self):
self.init_db()
f = dbm.open(_fname, 'r')

View File

@ -36,6 +36,20 @@ class DbmTestCase(unittest.TestCase):
self.assertEqual(self.d[b'xxx'], b'foo')
self.d.close()
def test_empty_value(self):
if dbm.ndbm.library == 'Berkeley DB':
self.skipTest("Berkeley DB doesn't distinguish the empty value "
"from the absent one")
self.d = dbm.ndbm.open(self.filename, 'c')
self.assertEqual(self.d.keys(), [])
self.d['empty'] = ''
self.assertEqual(self.d.keys(), [b'empty'])
self.assertIn(b'empty', self.d)
self.assertEqual(self.d[b'empty'], b'')
self.assertEqual(self.d.get(b'empty'), b'')
self.assertEqual(self.d.setdefault(b'empty'), b'')
self.d.close()
def test_modes(self):
for mode in ['r', 'rw', 'w', 'n']:
try: