Messages can be segmented into different .po files based on the location of their occurrences. This is so Studio strings can go into different .po files so we can direct Transifex workers to the LMS strings we really need done.
59 lines
1.6 KiB
Python
59 lines
1.6 KiB
Python
"""Test i18n/segment.py"""
|
|
|
|
import os.path
|
|
import shutil
|
|
import unittest
|
|
|
|
from path import path
|
|
import polib
|
|
|
|
from i18n.segment import segment_pofile
|
|
|
|
|
|
HERE = path(__file__).dirname()
|
|
TEST_DATA = HERE / "data"
|
|
WORK = HERE / "work"
|
|
|
|
|
|
class SegmentTest(unittest.TestCase):
|
|
"""Test segment_pofile."""
|
|
|
|
def setUp(self):
|
|
if not os.path.exists(WORK):
|
|
os.mkdir(WORK)
|
|
self.addCleanup(shutil.rmtree, WORK)
|
|
|
|
def assert_pofile_same(self, pofile1, pofile2):
|
|
"""The paths `p1` and `p2` should be identical pofiles."""
|
|
po1 = polib.pofile(pofile1)
|
|
po2 = polib.pofile(pofile2)
|
|
self.assertEqual(po1, po2)
|
|
|
|
def test_sample_data(self):
|
|
work_file = WORK / "django.po"
|
|
shutil.copyfile(TEST_DATA / "django_before.po", work_file)
|
|
original_pofile = polib.pofile(work_file)
|
|
|
|
written = segment_pofile(
|
|
work_file,
|
|
{
|
|
'studio.po': [
|
|
'cms/*',
|
|
'other_cms/*',
|
|
],
|
|
}
|
|
)
|
|
|
|
self.assertEqual(written, set([WORK / "django.po", WORK / "studio.po"]))
|
|
|
|
pofiles = [polib.pofile(f) for f in written]
|
|
after_entries = sum(len(pofile) for pofile in pofiles)
|
|
self.assertEqual(len(original_pofile), after_entries)
|
|
|
|
original_ids = set(m.msgid for m in original_pofile)
|
|
after_ids = set(m.msgid for pofile in pofiles for m in pofile)
|
|
self.assertEqual(original_ids, after_ids)
|
|
|
|
self.assert_pofile_same(WORK / "django.po", TEST_DATA / "django_after.po")
|
|
self.assert_pofile_same(WORK / "studio.po", TEST_DATA / "studio.po")
|