* Give the test_bsddb3 tests a unique temporary directory to run their

stuff in and clean it up afterwards regardless of the result.
* Get rid of duplicate list of test modules to run, they're maintained
  within test_all now.
* Print the BerkeleyDB version to stderr when running test_bsddb3 to
  help buildbot problem diagnosis.
This commit is contained in:
Gregory P. Smith 2008-05-25 07:14:09 +00:00
parent 6153ab3fee
commit 8107290fa1
2 changed files with 36 additions and 60 deletions

View File

@ -67,6 +67,8 @@ def get_new_database_path() :
return path
# NOTE: This path is overridden by a unique one and cleaned up
# afterwards when run under regrtest via Lib/test/test_bsddb3.py.
get_new_path.prefix="/tmp/z-Berkeley_DB"
get_new_path.num=0
@ -97,7 +99,7 @@ import test_all
test_all.verbose = verbose
def suite():
def suite(module_prefix='', timing_check=None):
try:
# this is special, it used to segfault the interpreter
import test_1413192
@ -107,14 +109,14 @@ def suite():
test_modules = [
'test_associate',
'test_basics',
'test_compat',
'test_compare',
'test_compat',
'test_cursor_pget_bug',
'test_dbobj',
'test_dbshelve',
'test_dbtables',
'test_early_close',
'test_distributed_transactions',
'test_replication',
'test_early_close',
'test_get_none',
'test_join',
'test_lock',
@ -122,15 +124,21 @@ def suite():
'test_pickle',
'test_queue',
'test_recno',
'test_thread',
'test_replication',
'test_sequence',
'test_cursor_pget_bug',
'test_thread',
]
alltests = unittest.TestSuite()
for name in test_modules:
module = __import__(name)
#module = __import__(name)
# Do it this way so that suite may be called externally via
# python's Lib/test/test_bsddb3.
module = __import__(module_prefix+name, globals(), locals(), name)
alltests.addTest(module.test_suite())
if timing_check:
alltests.addTest(unittest.makeSuite(timing_check))
return alltests

View File

@ -48,61 +48,29 @@ class TimingCheck(unittest.TestCase):
sys.__stdout__.flush()
def suite():
test_modules = [
'test_associate',
'test_basics',
'test_compare',
'test_compat',
'test_cursor_pget_bug',
'test_dbobj',
'test_dbshelve',
'test_dbtables',
'test_distributed_transactions',
'test_early_close',
'test_get_none',
'test_join',
'test_lock',
'test_misc',
'test_pickle',
'test_queue',
'test_recno',
'test_replication',
'test_sequence',
'test_thread',
]
alltests = unittest.TestSuite()
for name in test_modules:
module = __import__("bsddb.test."+name, globals(), locals(), name)
#print module,name
alltests.addTest(module.test_suite())
alltests.addTest(unittest.makeSuite(TimingCheck))
return alltests
# For invocation through regrtest
def test_main():
run_unittest(suite())
db_home = os.path.join(tempfile.gettempdir(), 'db_home')
from bsddb import db
from bsddb.test import test_all
test_all.get_new_path.prefix = os.path.join(tempfile.gettempdir(),
'z-test_bsddb3-%s' %
os.getpid())
# Please leave this print in, having this show up in the buildbots
# makes diagnosing problems a lot easier.
print >>sys.stderr, db.DB_VERSION_STRING
print >>sys.stderr, 'Test path prefix: ', test_all.get_new_path.prefix
try:
run_unittest(test_all.suite(module_prefix='bsddb.test.',
timing_check=TimingCheck))
finally:
# The only reason to remove db_home is in case if there is an old
# one lying around. This might be by a different user, so just
# ignore errors. We should always make a unique name now.
try:
rmtree(db_home)
rmtree(test_all.get_new_path.prefix)
except:
pass
rmtree('db_home%d' % os.getpid())
# For invocation as a script
if __name__ == '__main__':
from bsddb import db
print '-=' * 38
print db.DB_VERSION_STRING
print 'bsddb.db.version(): %s' % (db.version(),)
print 'bsddb.db.__version__: %s' % db.__version__
print 'bsddb.db.cvsid: %s' % db.cvsid
print 'python version: %s' % sys.version
print '-=' * 38
test_main()