parent
9d026e3fe3
commit
bbca8bd17e
|
@ -42,6 +42,7 @@ from openerp import SUPERUSER_ID
|
|||
from openerp.tools.translate import _
|
||||
from openerp.modules.module import initialize_sys_path, \
|
||||
load_openerp_module, init_module_models, adapt_version
|
||||
from module import runs_post_install
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
_test_logger = logging.getLogger('openerp.tests')
|
||||
|
@ -425,8 +426,13 @@ def load_modules(db, force_demo=False, status=None, update_module=False):
|
|||
for model in registry.models.values():
|
||||
model._register_hook(cr)
|
||||
|
||||
# STEP 9: Run the post-install tests
|
||||
cr.commit()
|
||||
if openerp.tools.config['test_enable']:
|
||||
cr.execute("SELECT name FROM ir_module_module WHERE state='installed'")
|
||||
for module_name in cr.fetchall():
|
||||
report.record_result(openerp.modules.module.run_unit_tests(module_name[0], cr.dbname, position=runs_post_install))
|
||||
finally:
|
||||
cr.close()
|
||||
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -356,30 +356,6 @@ class TestStream(object):
|
|||
|
||||
current_test = None
|
||||
|
||||
def run_unit_tests(module_name, dbname):
|
||||
"""
|
||||
:returns: ``True`` if all of ``module_name``'s tests succeeded, ``False``
|
||||
if any of them failed.
|
||||
:rtype: bool
|
||||
"""
|
||||
global current_test
|
||||
current_test = module_name
|
||||
mods = get_test_modules(module_name)
|
||||
r = True
|
||||
for m in mods:
|
||||
tests = unwrap_suite(unittest2.TestLoader().loadTestsFromModule(m))
|
||||
suite = unittest2.TestSuite(itertools.ifilter(runs_at_install, tests))
|
||||
_logger.info('running %s tests.', m.__name__)
|
||||
|
||||
result = unittest2.TextTestRunner(verbosity=2, stream=TestStream(m.__name__)).run(suite)
|
||||
|
||||
if not result.wasSuccessful():
|
||||
r = False
|
||||
_logger.error("Module %s: %d failures, %d errors",
|
||||
module_name, len(result.failures), len(result.errors))
|
||||
current_test = None
|
||||
return r
|
||||
|
||||
def runs_at(test, hook, default):
|
||||
# by default, tests do not run post install
|
||||
test_runs = getattr(test, hook, default)
|
||||
|
@ -396,6 +372,30 @@ def runs_at(test, hook, default):
|
|||
runs_at_install = functools.partial(runs_at, hook='at_install', default=True)
|
||||
runs_post_install = functools.partial(runs_at, hook='post_install', default=False)
|
||||
|
||||
def run_unit_tests(module_name, dbname, position=runs_at_install):
|
||||
"""
|
||||
:returns: ``True`` if all of ``module_name``'s tests succeeded, ``False``
|
||||
if any of them failed.
|
||||
:rtype: bool
|
||||
"""
|
||||
global current_test
|
||||
current_test = module_name
|
||||
mods = get_test_modules(module_name)
|
||||
r = True
|
||||
for m in mods:
|
||||
tests = unwrap_suite(unittest2.TestLoader().loadTestsFromModule(m))
|
||||
suite = unittest2.TestSuite(itertools.ifilter(position, tests))
|
||||
_logger.info('running %s tests.', m.__name__)
|
||||
|
||||
result = unittest2.TextTestRunner(verbosity=2, stream=TestStream(m.__name__)).run(suite)
|
||||
|
||||
if not result.wasSuccessful():
|
||||
r = False
|
||||
_logger.error("Module %s: %d failures, %d errors",
|
||||
module_name, len(result.failures), len(result.errors))
|
||||
current_test = None
|
||||
return r
|
||||
|
||||
def unwrap_suite(test):
|
||||
"""
|
||||
Attempts to unpack testsuites (holding suites or cases) in order to
|
||||
|
|
Loading…
Reference in New Issue