42 lines
1.5 KiB
Python
42 lines
1.5 KiB
Python
from itertools import chain
|
|
|
|
import json
|
|
import os
|
|
import pytest
|
|
from tests import marks
|
|
from tests.base_test_case import NoDeviceTestCase
|
|
|
|
|
|
class TestTranslations(NoDeviceTestCase):
|
|
|
|
@marks.testrail_id(6223)
|
|
@marks.skip
|
|
# skipped: no need to launch it on daily basis
|
|
def test_find_unused_translations(self):
|
|
directory = os.sep.join(__file__.split(os.sep)[:-5])
|
|
with open(os.path.join(directory, 'translations/en.json'), 'r') as f:
|
|
data = set(json.load(f).keys())
|
|
result = []
|
|
paths = ['src/status_im', 'components/src', 'src']
|
|
for root, dirs, files in chain.from_iterable(os.walk(os.path.join(directory, path)) for path in paths):
|
|
dirs[:] = [d for d in dirs if d not in ['test', 'translations']]
|
|
for file in [file for file in files if file.endswith('.cljs')]:
|
|
with open(os.path.join(root, file), "r") as source:
|
|
try:
|
|
content = source.read()
|
|
for key_name in data:
|
|
if key_name in content:
|
|
result.append(key_name)
|
|
except UnicodeDecodeError:
|
|
pass
|
|
unused = data - set(result)
|
|
recheck = [i for i in unused if i[-1].isdigit()]
|
|
error = ''
|
|
if recheck:
|
|
error += 'Translations to recheck: \n %s' % recheck
|
|
unused -= set(recheck)
|
|
if unused:
|
|
error += '\nUnused translations: \n %s' % unused
|
|
if error:
|
|
pytest.fail(error)
|