# -*- coding: utf-8 -*- """Test suite consisting of all testcases.""" import sys from tables.tests import common from tables.tests.common import unittest from tables.tests.common import print_heavy, print_versions def suite(): test_modules = [ 'tables.tests.test_attributes', 'tables.tests.test_basics', 'tables.tests.test_create', 'tables.tests.test_backcompat', 'tables.tests.test_types', 'tables.tests.test_lists', 'tables.tests.test_tables', 'tables.tests.test_tablesMD', 'tables.tests.test_array', 'tables.tests.test_earray', 'tables.tests.test_carray', 'tables.tests.test_vlarray', 'tables.tests.test_tree', 'tables.tests.test_timetype', 'tables.tests.test_do_undo', 'tables.tests.test_enum', 'tables.tests.test_nestedtypes', 'tables.tests.test_hdf5compat', 'tables.tests.test_numpy', 'tables.tests.test_queries', 'tables.tests.test_expression', 'tables.tests.test_links', 'tables.tests.test_indexes', 'tables.tests.test_indexvalues', 'tables.tests.test_index_backcompat', 'tables.tests.test_aux', 'tables.tests.test_utils', # Sub-packages 'tables.nodes.tests.test_filenode', ] # print('-=' * 38) # The test for garbage must be run *in the last place*. # Else, it is not as useful. test_modules.append('tables.tests.test_garbage') alltests = unittest.TestSuite() if common.show_memory: # Add a memory report at the beginning alltests.addTest(unittest.makeSuite(common.ShowMemTime)) for name in test_modules: # Unexpectedly, the following code doesn't seem to work anymore # in python 3 # exec('from %s import suite as test_suite' % name) __import__(name) test_suite = sys.modules[name].suite alltests.addTest(test_suite()) if common.show_memory: # Add a memory report after each test module alltests.addTest(unittest.makeSuite(common.ShowMemTime)) return alltests def test(verbose=False, heavy=False): """Run all the tests in the test suite. If *verbose* is set, the test suite will emit messages with full verbosity (not recommended unless you are looking into a certain problem). If *heavy* is set, the test suite will be run in *heavy* mode (you should be careful with this because it can take a lot of time and resources from your computer). Return 0 (os.EX_OK) if all tests pass, 1 in case of failure """ print_versions() print_heavy(heavy) # What a context this is! #oldverbose, common.verbose = common.verbose, verbose oldheavy, common.heavy = common.heavy, heavy try: result = unittest.TextTestRunner(verbosity=1+int(verbose)).run(suite()) if result.wasSuccessful(): return 0 else: return 1 finally: #common.verbose = oldverbose common.heavy = oldheavy # there are pretty young heavies, too ;)