From 8107290fa186bd5efa2a9c158000fd578d228a6c Mon Sep 17 00:00:00 2001 From: "Gregory P. Smith" Date: Sun, 25 May 2008 07:14:09 +0000 Subject: [PATCH] * 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. --- Lib/bsddb/test/test_all.py | 22 ++++++++---- Lib/test/test_bsddb3.py | 74 +++++++++++--------------------------- 2 files changed, 36 insertions(+), 60 deletions(-) diff --git a/Lib/bsddb/test/test_all.py b/Lib/bsddb/test/test_all.py index 580bc7f8b5f..11f1f6a59c0 100644 --- a/Lib/bsddb/test/test_all.py +++ b/Lib/bsddb/test/test_all.py @@ -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 diff --git a/Lib/test/test_bsddb3.py b/Lib/test/test_bsddb3.py index a4d22941adf..dd22bd0ee7b 100644 --- a/Lib/test/test_bsddb3.py +++ b/Lib/test/test_bsddb3.py @@ -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') - # 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) - 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 + 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(test_all.get_new_path.prefix) + except: + pass + +if __name__ == '__main__': test_main()