From 96223568c445bc1d378fa4d8833f90d3dad8ec7e Mon Sep 17 00:00:00 2001 From: Adrian Torres Date: Fri, 13 Mar 2020 14:03:15 +0000 Subject: [PATCH] [FIX] core: invalidate registry at the start of setup_models This is necessary in order to create models on-the-fly within tests and to test improper Model / Field creation: registry.reset_changes will only perform the reset of the registry if it is invalidated, however if the setup of models crashes before it is invalidated (as is the case of a test), the reset_changes will not be triggered and thus the registry will be left dirty for subsequent tests. --- odoo/modules/registry.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/odoo/modules/registry.py b/odoo/modules/registry.py index 8d443138502..c4bc64adfe2 100644 --- a/odoo/modules/registry.py +++ b/odoo/modules/registry.py @@ -235,6 +235,7 @@ class Registry(Mapping): This must be called after loading modules and before using the ORM. """ lazy_property.reset_all(self) + self.registry_invalidated = True env = odoo.api.Environment(cr, SUPERUSER_ID, {}) if env.all.tocompute: @@ -303,8 +304,6 @@ class Registry(Mapping): for model in models: model._setup_complete() - self.registry_invalidated = True - def post_init(self, func, *args, **kwargs): """ Register a function to call at the end of :meth:`~.init_models`. """ self._post_init_queue.append(partial(func, *args, **kwargs))