From f4d155fce8989162c4334516ea67a012feff2952 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Fri, 14 Feb 2014 15:34:44 +0100 Subject: [PATCH 1/6] [REM] redundant logger initialization bzr revid: xmo@openerp.com-20140214143444-z5ez21g0t61jh81u --- openerp/modules/module.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/openerp/modules/module.py b/openerp/modules/module.py index e3b8e10cc97..f7330a268d1 100644 --- a/openerp/modules/module.py +++ b/openerp/modules/module.py @@ -50,8 +50,6 @@ ad_paths = [] # Modules already loaded loaded = [] -_logger = logging.getLogger(__name__) - class AddonsImportHook(object): """ Import hook to load OpenERP addons from multiple paths. From 8e63677c90d234898fe9346b3ba06dd64890c02f Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Fri, 14 Feb 2014 15:35:49 +0100 Subject: [PATCH 2/6] [IMP] fix flow analysis warning, simplify loader code bzr revid: xmo@openerp.com-20140214143549-sezf14rvt0cnm2cr --- openerp/modules/module.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/openerp/modules/module.py b/openerp/modules/module.py index f7330a268d1..14db2da47c6 100644 --- a/openerp/modules/module.py +++ b/openerp/modules/module.py @@ -68,13 +68,10 @@ class AddonsImportHook(object): return self # We act as a loader too. def load_module(self, module_name): + if module_name in sys.modules: + return sys.modules[module_name] - module_parts = module_name.split('.') - if len(module_parts) == 3 and module_name.startswith('openerp.addons.'): - module_part = module_parts[2] - if module_name in sys.modules: - return sys.modules[module_name] - + _1, _2, module_part = module_name.split('.') # Note: we don't support circular import. f, path, descr = imp.find_module(module_part, ad_paths) mod = imp.load_module('openerp.addons.' + module_part, f, path, descr) From 2921fa339d39d088c86ce1abb59acef1b3d82de1 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Fri, 14 Feb 2014 15:37:24 +0100 Subject: [PATCH 3/6] [REM] unused variable bzr revid: xmo@openerp.com-20140214143724-fcxy9tn8gmodi223 --- openerp/modules/module.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/modules/module.py b/openerp/modules/module.py index 14db2da47c6..d7ee31962c7 100644 --- a/openerp/modules/module.py +++ b/openerp/modules/module.py @@ -323,7 +323,7 @@ def get_test_modules(module): # Try to import the module module = 'openerp.addons.' + module + '.tests' try: - m = __import__(module) + __import__(module) except Exception, e: # If module has no `tests` sub-module, no problem. if str(e) != 'No module named tests': From 4d32dabdd635416facf661c4bb6131609bd450ad Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Fri, 14 Feb 2014 15:39:32 +0100 Subject: [PATCH 4/6] [IMP] replace explicit iteration by listcomp bzr revid: xmo@openerp.com-20140214143932-8nb30mkdxzt96fd5 --- openerp/modules/module.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/openerp/modules/module.py b/openerp/modules/module.py index d7ee31962c7..6eaf9d7e6e0 100644 --- a/openerp/modules/module.py +++ b/openerp/modules/module.py @@ -331,10 +331,8 @@ def get_test_modules(module): return [] # include submodules too - result = [] - for name in sys.modules: - if name.startswith(module) and sys.modules[name]: - result.append(sys.modules[name]) + result = [mod_obj for name, mod_obj in sys.modules.iteritems() + if name.startswith(module)] return result # Use a custom stream object to log the test executions. From d21114454ef55502a004827f909027c8aae9e27d Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Fri, 14 Feb 2014 15:52:19 +0100 Subject: [PATCH 5/6] [IMP] remove pointless extra newline in log message of column removal bzr revid: xmo@openerp.com-20140214145219-07pk822tpo0nohpn --- openerp/osv/orm.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index 6ac65125620..b24fd0cb6ae 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -2694,7 +2694,7 @@ class BaseModel(object): f_pg_notnull = res['attnotnull'] if isinstance(f, fields.function) and not f.store and\ not getattr(f, 'nodrop', False): - _logger.info('column %s (%s) in table %s removed: converted to a function !\n', + _logger.info('column %s (%s) converted to a function, removed from table %s', k, f.string, self._table) cr.execute('ALTER TABLE "%s" DROP COLUMN "%s" CASCADE' % (self._table, k)) cr.commit() From a86d7a548dbaec6148be9bd4f399fed002ccaa9e Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Fri, 14 Feb 2014 15:52:57 +0100 Subject: [PATCH 6/6] [IMP] use TestSuite.addTests instead of manually iterating on loadTestsFromModule results bzr revid: xmo@openerp.com-20140214145257-2alo4dvn8rmq3xfj --- openerp/modules/module.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/openerp/modules/module.py b/openerp/modules/module.py index 6eaf9d7e6e0..1d8bbfde7bb 100644 --- a/openerp/modules/module.py +++ b/openerp/modules/module.py @@ -360,9 +360,9 @@ def run_unit_tests(module_name, dbname): r = True for m in mods: suite = unittest2.TestSuite() - for t in unittest2.TestLoader().loadTestsFromModule(m): - suite.addTest(t) - _logger.log(logging.INFO, 'module %s: running test %s.', module_name, m.__name__) + suite.addTests(unittest2.TestLoader().loadTestsFromModule(m)) + _logger.info('module %s: running test %s.', module_name, m.__name__) + result = unittest2.TextTestRunner(verbosity=2, stream=TestStream()).run(suite) if not result.wasSuccessful(): r = False