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()