applies the better dbm and shelve related unittests. bug 1007 from larryhastings
diff --git a/Lib/test/test_anydbm.py b/Lib/test/test_anydbm.py
index 367360f..9399d71 100644
--- a/Lib/test/test_anydbm.py
+++ b/Lib/test/test_anydbm.py
@@ -11,7 +11,33 @@
_fname = test_support.TESTFN
-def _delete_files():
+_all_modules = []
+
+for _name in anydbm._names:
+ try:
+ _module = __import__(_name)
+ except ImportError:
+ continue
+ _all_modules.append(_module)
+
+
+#
+# Iterates over every database module supported by anydbm
+# currently available, setting anydbm to use each in turn,
+# and yielding that module
+#
+def dbm_iterator():
+ old_default = anydbm._defaultmod
+ for module in _all_modules:
+ anydbm._defaultmod = module
+ yield module
+ anydbm._defaultmod = old_default
+
+#
+# Clean up all scratch databases we might have created
+# during testing
+#
+def delete_files():
# we don't know the precise name the underlying database uses
# so we use glob to locate all names
for f in glob.glob(_fname + "*"):
@@ -60,6 +86,14 @@
keys = self.keys_helper(f)
f.close()
+ def test_anydbm_access(self):
+ self.init_db()
+ f = anydbm.open(_fname, 'r')
+ key = "a".encode("ascii")
+ assert(key in f)
+ assert(f[key] == b"Python:")
+ f.close()
+
def read_helper(self, f):
keys = self.keys_helper(f)
for key in self._dict:
@@ -78,16 +112,18 @@
return keys
def tearDown(self):
- _delete_files()
+ delete_files()
def setUp(self):
- _delete_files()
+ delete_files()
+
def test_main():
try:
- test_support.run_unittest(AnyDBMTestCase)
+ for module in dbm_iterator():
+ test_support.run_unittest(AnyDBMTestCase)
finally:
- _delete_files()
+ delete_files()
if __name__ == "__main__":
test_main()