"""Test suite consisting of all testcases."""
import sys
from tables.tests import common
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_large_tables',
'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',
'tables.tests.test_direct_chunk',
# 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 = common.unittest.TestSuite()
if common.show_memory:
# Add a memory report at the beginning
alltests.addTest(common.make_suite(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(common.make_suite(common.ShowMemTime))
return alltests
[docs]
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
"""
common.print_versions()
common.print_heavy(heavy)
# What a context this is!
# oldverbose, common.verbose = common.verbose, verbose
oldheavy, common.heavy = common.heavy, heavy
try:
result = common.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 ;)