Browse Source

[FIX] purge uninstalled uninstallable modules instead of deleting

[FIX] database_cleanup reloads the registry

which has weird side effects during testing. Take care
database_cleanup's tests don't mess up the following tests
pull/1408/head
Holger Brunn 8 years ago
committed by Pedro M. Baeza
parent
commit
1cd239174c
  1. 4
      database_cleanup/models/purge_modules.py
  2. 6
      database_cleanup/tests/test_database_cleanup.py

4
database_cleanup/models/purge_modules.py

@ -69,7 +69,9 @@ class CleanupPurgeWizardModule(models.TransientModel):
if get_module_path(module.name): if get_module_path(module.name):
continue continue
if module.state == 'uninstalled': if module.state == 'uninstalled':
module.unlink()
self.env['cleanup.purge.line.module'].create({
'name': module.name,
}).purge()
continue continue
res.append((0, 0, {'name': module.name})) res.append((0, 0, {'name': module.name}))

6
database_cleanup/tests/test_database_cleanup.py

@ -2,6 +2,7 @@
# © 2016 Therp BV <http://therp.nl> # © 2016 Therp BV <http://therp.nl>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from psycopg2 import ProgrammingError from psycopg2 import ProgrammingError
from openerp.modules.registry import RegistryManager
from openerp.tools import config from openerp.tools import config
from openerp.tests.common import TransactionCase from openerp.tests.common import TransactionCase
@ -57,6 +58,9 @@ class TestDatabaseCleanup(TransactionCase):
}) })
purge_modules = self.env['cleanup.purge.wizard.module'].create({}) purge_modules = self.env['cleanup.purge.wizard.module'].create({})
# this reloads our registry, and we don't want to run tests twice # this reloads our registry, and we don't want to run tests twice
# we also need the original registry for further tests, so save a
# reference to it
original_registry = RegistryManager.registries[self.env.cr.dbname]
config.options['test_enable'] = False config.options['test_enable'] = False
purge_modules.purge_all() purge_modules.purge_all()
config.options['test_enable'] = True config.options['test_enable'] = True
@ -64,6 +68,8 @@ class TestDatabaseCleanup(TransactionCase):
self.assertFalse(self.env['ir.module.module'].search([ self.assertFalse(self.env['ir.module.module'].search([
('name', '=', 'database_cleanup_test'), ('name', '=', 'database_cleanup_test'),
])) ]))
# reset afterwards
RegistryManager.registries[self.env.cr.dbname] = original_registry
# create an orphaned table # create an orphaned table
self.env.cr.execute('create table database_cleanup_test (test int)') self.env.cr.execute('create table database_cleanup_test (test int)')

Loading…
Cancel
Save