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

Miss Islington (bot) webhook-mailer at python.org
Sun Apr 29 09:37:24 EDT 2018


https://github.com/python/cpython/commit/e57d3e3a13d1d4c6a057e47db8361695194bb5ab
commit: e57d3e3a13d1d4c6a057e47db8361695194bb5ab
branch: 3.7
author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
committer: GitHub <noreply at github.com>
date: 2018-04-29T06:37:21-07:00
summary:

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

(cherry picked from commit 70af06cdc4e8fbee0b9d7d46bdc193097d4bc71f)

Co-authored-by: Serhiy Storchaka <storchaka at gmail.com>

files:
M Lib/test/test_dbm.py
M Lib/test/test_dbm_ndbm.py

diff --git a/Lib/test/test_dbm.py b/Lib/test/test_dbm.py
index fb8980780f1d..78c32c4c93d3 100644
--- a/Lib/test/test_dbm.py
+++ b/Lib/test/test_dbm.py
@@ -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 @@ def test_anydbm_keys(self):
         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')
diff --git a/Lib/test/test_dbm_ndbm.py b/Lib/test/test_dbm_ndbm.py
index f921167ca463..49b88f5cccef 100644
--- a/Lib/test/test_dbm_ndbm.py
+++ b/Lib/test/test_dbm_ndbm.py
@@ -36,6 +36,20 @@ def test_keys(self):
         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:



More information about the Python-checkins mailing list