[Python-checkins] python/dist/src/Lib/test test_whichdb.py,NONE,1.1

montanaro@users.sourceforge.net montanaro@users.sourceforge.net
Fri, 02 Aug 2002 10:10:14 -0700


Update of /cvsroot/python/python/dist/src/Lib/test
In directory usw-pr-cvs1:/tmp/cvs-serv12271

Added Files:
	test_whichdb.py 
Log Message:
regression test for the whichdb module


--- NEW FILE: test_whichdb.py ---
#! /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()