/Lib/test/test_whichdb.py

http://unladen-swallow.googlecode.com/ · Python · 65 lines · 41 code · 10 blank · 14 comment · 9 complexity · c7729cd11206f224922023ae82c0b7e0 MD5 · raw file

  1. #! /usr/bin/env python
  2. """Test script for the whichdb module
  3. based on test_anydbm.py
  4. """
  5. import os
  6. import test.test_support
  7. import unittest
  8. import whichdb
  9. import anydbm
  10. import glob
  11. _fname = test.test_support.TESTFN
  12. def _delete_files():
  13. # we don't know the precise name the underlying database uses
  14. # so we use glob to locate all names
  15. for f in glob.glob(_fname + "*"):
  16. try:
  17. os.unlink(f)
  18. except OSError:
  19. pass
  20. class WhichDBTestCase(unittest.TestCase):
  21. # Actual test methods are added to namespace
  22. # after class definition.
  23. def __init__(self, *args):
  24. unittest.TestCase.__init__(self, *args)
  25. def tearDown(self):
  26. _delete_files()
  27. def setUp(self):
  28. _delete_files()
  29. for name in anydbm._names:
  30. # we define a new test method for each
  31. # candidate database module.
  32. try:
  33. mod = __import__(name)
  34. except ImportError:
  35. continue
  36. def test_whichdb_name(self, name=name, mod=mod):
  37. # Check whether whichdb correctly guesses module name
  38. # for databases opened with module mod.
  39. # Try with empty files first
  40. f = mod.open(_fname, 'c')
  41. f.close()
  42. self.assertEqual(name, whichdb.whichdb(_fname))
  43. # Now add a key
  44. f = mod.open(_fname, 'w')
  45. f["1"] = "1"
  46. f.close()
  47. self.assertEqual(name, whichdb.whichdb(_fname))
  48. setattr(WhichDBTestCase,"test_whichdb_%s" % name, test_whichdb_name)
  49. def test_main():
  50. try:
  51. test.test_support.run_unittest(WhichDBTestCase)
  52. finally:
  53. _delete_files()
  54. if __name__ == "__main__":
  55. test_main()