Source code for tables.tests.test_all
# -*- coding: utf-8 -*-
"""Run all test cases."""
from __future__ import print_function
import sys
import numpy
import tables
from tables.req_versions import min_hdf5_version, min_numpy_version
from tables.tests import common
from tables.tests.common import unittest
from tables.tests.common import print_heavy, print_versions
def get_tuple_version(hexversion):
"""Get a tuple from a compact version in hex."""
h = hexversion
return(h & 0xff0000) >> 16, (h & 0xff00) >> 8, h & 0xff
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',
# 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
[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
"""
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 ;)
if __name__ == '__main__':
common.parse_argv(sys.argv)
hdf5_version = get_tuple_version(tables.which_lib_version("hdf5")[0])
if hdf5_version < min_hdf5_version:
print("*Warning*: HDF5 version is lower than recommended: %s < %s" %
(hdf5_version, min_hdf5_version))
if numpy.__version__ < min_numpy_version:
print("*Warning*: NumPy version is lower than recommended: %s < %s" %
(numpy.__version__, min_numpy_version))
# Handle some global flags (i.e. only useful for test_all.py)
only_versions = 0
args = sys.argv[:]
for arg in args:
# Remove 'show-versions' for PyTables 2.3 or higher
if arg in ['--print-versions', '--show-versions']:
only_versions = True
sys.argv.remove(arg)
elif arg == '--show-memory':
common.show_memory = True
sys.argv.remove(arg)
print_versions()
if not only_versions:
print_heavy(common.heavy)
unittest.main(defaultTest='tables.tests.suite')