Odoo18-Base/odoo/addons/test_lint/tests/test_pofile.py

30 lines
1.2 KiB
Python
Raw Permalink Normal View History

2025-03-10 11:12:23 +07:00
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from collections import Counter
from odoo.modules import get_modules, get_resource_path
from odoo.tests.common import TransactionCase
from odoo.tools.translate import TranslationFileReader
class PotLinter(TransactionCase):
def test_pot_duplicate_entries(self):
def format(entry):
# TranslationFileReader only returns those three types
if entry['type'] == 'model':
return ('model', entry['name'], entry['imd_name'])
elif entry['type'] == 'model_terms':
return ('model_terms', entry['name'], entry['imd_name'], entry['src'])
elif entry['type'] == 'code':
return ('code', entry['src'])
# retrieve all modules, and their corresponding POT file
for module in get_modules():
filename = get_resource_path(module, 'i18n', module + '.pot')
if not filename:
continue
counts = Counter(map(format, TranslationFileReader(filename)))
duplicates = [key for key, count in counts.items() if count > 1]
self.assertFalse(duplicates, "Duplicate entries found in %s" % filename)