diff --git a/src/base/tests/test_util.py b/src/base/tests/test_util.py index ce0bb1abf..67d2a8afd 100644 --- a/src/base/tests/test_util.py +++ b/src/base/tests/test_util.py @@ -1449,6 +1449,11 @@ def test_replace_record_references_batch__uniqueness(self): [count] = self.env.cr.fetchone() self.assertEqual(count, 1) + @mute_logger("odoo.upgrade.util.records") + def test_replace_record_references_batch__idem_mapping(self): + # This logs a warning but shouldn't fail + util.replace_record_references_batch(self.env.cr, {1: 1, 2: 2}, "res.country") + def _prepare_test_delete_unused(self): def create_cat(): name = f"test_{uuid.uuid4().hex}" diff --git a/src/util/records.py b/src/util/records.py index b9127b838..7b748cfb9 100644 --- a/src/util/records.py +++ b/src/util/records.py @@ -1469,6 +1469,9 @@ def replace_record_references_batch(cr, id_mapping, model_src, model_dst=None, r if same_ids: _logger.warning("Replace references in model `%s`, ignoring same-id mapping `%s`", model_src, same_ids) id_mapping = {k: v for k, v in id_mapping.items() if k != v} + if not id_mapping: + _logger.warning("Nothing to replace in model `%s`, ignoring empty mapping", model_src) + return assert id_mapping assert all(isinstance(v, int) and isinstance(k, int) for k, v in id_mapping.items())