]> granicus.if.org Git - python/commitdiff
regression test for the whichdb module
authorSkip Montanaro <skip@pobox.com>
Fri, 2 Aug 2002 17:10:10 +0000 (17:10 +0000)
committerSkip Montanaro <skip@pobox.com>
Fri, 2 Aug 2002 17:10:10 +0000 (17:10 +0000)
Lib/test/test_whichdb.py [new file with mode: 0644]

diff --git a/Lib/test/test_whichdb.py b/Lib/test/test_whichdb.py
new file mode 100644 (file)
index 0000000..8f63862
--- /dev/null
@@ -0,0 +1,63 @@
+#! /usr/bin/env python
+"""Test script for the whichdb module
+   based on test_anydbm.py
+"""
+
+import os
+import test.test_support
+import unittest
+import whichdb
+import anydbm
+import tempfile
+import glob
+
+_fname = tempfile.mktemp()
+
+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 + "*"):
+        try:
+            os.unlink(f)
+        except OSError:
+            pass
+
+class WhichDBTestCase(unittest.TestCase):
+    # Actual test methods are added to namespace
+    # after class definition.
+    def __init__(self, *args):
+        unittest.TestCase.__init__(self, *args)
+
+    def tearDown(self):
+        _delete_files()
+
+    def setUp(self):
+        _delete_files()
+
+for name in anydbm._names:
+    # we define a new test method for each
+    # candidate database module.
+    try:
+        mod = __import__(name)
+    except ImportError:
+        continue
+    
+    def test_whichdb_name(self,name=name,mod=mod):
+        """Check whether whichdb correctly guesses module name
+        for databases opened with module mod.
+        """
+        f = mod.open(_fname, 'c')
+        f["1"] = "1"
+        f.close()
+        self.assertEqual(name, whichdb.whichdb(_fname))
+    setattr(WhichDBTestCase,"test_whichdb_%s" % name, test_whichdb_name)
+
+def test_main():
+    try:
+        test.test_support.run_unittest(WhichDBTestCase)
+    finally:
+        _delete_files()
+
+if __name__ == "__main__":
+    test_main()
+