Browse Source

[10.0][FIX] module_auto_update: Don't set 'to upgrade' on void recordset modules

pull/1279/head
Denis Roussel 7 years ago
committed by Stéphane Bidoul (ACSONE)
parent
commit
7325b5f097
No known key found for this signature in database GPG Key ID: BCAB2555446B5B92
  1. 2
      module_auto_update/models/module.py
  2. 36
      module_auto_update/tests/test_module.py

2
module_auto_update/models/module.py

@ -32,6 +32,8 @@ class IncompleteUpgradeError(exceptions.UserError):
def ensure_module_state(env, modules, state): def ensure_module_state(env, modules, state):
# read module states, bypassing any Odoo cache # read module states, bypassing any Odoo cache
if not modules:
return
env.cr.execute( env.cr.execute(
"SELECT name FROM ir_module_module " "SELECT name FROM ir_module_module "
"WHERE id IN %s AND state != %s", "WHERE id IN %s AND state != %s",

36
module_auto_update/tests/test_module.py

@ -180,6 +180,42 @@ class TestModuleAfterInstall(TransactionCase):
finally: finally:
Bmu._revert_method('upgrade_module') Bmu._revert_method('upgrade_module')
def test_incomplete_upgrade_no_checkusm(self):
Imm = self.env['ir.module.module']
Bmu = self.env['base.module.upgrade']
installed_modules = Imm.search(
[('state', '=', 'installed')])
# change the checksum of 'base'
Imm._save_installed_checksums()
saved_checksums = Imm._get_saved_checksums()
Imm._save_checksums(saved_checksums)
self.base_module.write({'state': 'to upgrade'})
def upgrade_module_mock(self_model):
upgrade_module_mock.call_count += 1
# since we are upgrading base, all installed module
# must have been marked to upgrade at this stage
self.assertEqual(self.base_module.state, 'to upgrade')
self.assertEqual(self.own_module.state, 'installed')
installed_modules.write({'state': 'installed'})
upgrade_module_mock.call_count = 0
# upgrade_changed_checksum commits, so mock that
with mock.patch.object(self.env.cr, 'commit'):
# we simulate an install by setting module states
Bmu._patch_method('upgrade_module',
upgrade_module_mock)
# got just other modules to_upgrade and no checksum ones
try:
Imm.upgrade_changed_checksum()
self.assertEqual(upgrade_module_mock.call_count, 1)
finally:
Bmu._revert_method('upgrade_module')
def test_nothing_to_upgrade(self): def test_nothing_to_upgrade(self):
Imm = self.env['ir.module.module'] Imm = self.env['ir.module.module']
Bmu = self.env['base.module.upgrade'] Bmu = self.env['base.module.upgrade']

Loading…
Cancel
Save