| #! /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 glob | 
 |  | 
 | _fname = test.test_support.TESTFN | 
 |  | 
 | 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. | 
 |         # Try with empty files first | 
 |         f = mod.open(_fname, 'c') | 
 |         f.close() | 
 |         self.assertEqual(name, whichdb.whichdb(_fname)) | 
 |         # Now add a key | 
 |         f = mod.open(_fname, 'w') | 
 |         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() |