171 lines
5.6 KiB
Python
171 lines
5.6 KiB
Python
import unittest
|
|
import os
|
|
import tempfile
|
|
import shutil
|
|
|
|
from compare_locales import mozpath
|
|
from compare_locales.paths import (
|
|
EnumerateApp,
|
|
EnumerateSourceTreeApp,
|
|
ProjectFiles,
|
|
)
|
|
|
|
MAIL_INI = """\
|
|
[general]
|
|
depth = ../..
|
|
all = mail/locales/all-locales
|
|
|
|
[compare]
|
|
dirs = mail
|
|
|
|
[includes]
|
|
# non-central apps might want to use %(topsrcdir)s here, or other vars
|
|
# RFE: that needs to be supported by compare-locales, too, though
|
|
toolkit = mozilla/toolkit/locales/l10n.ini
|
|
|
|
[include_toolkit]
|
|
type = hg
|
|
mozilla = mozilla-central
|
|
repo = http://hg.mozilla.org/
|
|
l10n.ini = toolkit/locales/l10n.ini
|
|
"""
|
|
|
|
|
|
MAIL_ALL_LOCALES = """af
|
|
de
|
|
fr
|
|
"""
|
|
|
|
MAIL_FILTER_PY = """
|
|
def test(mod, path, entity = None):
|
|
if mod == 'toolkit' and path == 'ignored_path':
|
|
return 'ignore'
|
|
return 'error'
|
|
"""
|
|
|
|
TOOLKIT_INI = """[general]
|
|
depth = ../..
|
|
|
|
[compare]
|
|
dirs = toolkit
|
|
"""
|
|
|
|
|
|
class TestApp(unittest.TestCase):
|
|
def setUp(self):
|
|
self.stage = tempfile.mkdtemp()
|
|
mail = mozpath.join(self.stage, "comm", "mail", "locales")
|
|
toolkit = mozpath.join(self.stage, "comm", "mozilla", "toolkit", "locales")
|
|
l10n = mozpath.join(self.stage, "l10n-central", "de", "toolkit")
|
|
os.makedirs(mozpath.join(mail, "en-US"))
|
|
os.makedirs(mozpath.join(toolkit, "en-US"))
|
|
os.makedirs(l10n)
|
|
with open(mozpath.join(mail, "l10n.ini"), "w") as f:
|
|
f.write(MAIL_INI)
|
|
with open(mozpath.join(mail, "all-locales"), "w") as f:
|
|
f.write(MAIL_ALL_LOCALES)
|
|
with open(mozpath.join(mail, "filter.py"), "w") as f:
|
|
f.write(MAIL_FILTER_PY)
|
|
with open(mozpath.join(toolkit, "l10n.ini"), "w") as f:
|
|
f.write(TOOLKIT_INI)
|
|
with open(mozpath.join(mail, "en-US", "mail.ftl"), "w") as f:
|
|
f.write("")
|
|
with open(mozpath.join(toolkit, "en-US", "platform.ftl"), "w") as f:
|
|
f.write("")
|
|
with open(mozpath.join(l10n, "localized.ftl"), "w") as f:
|
|
f.write("")
|
|
|
|
def tearDown(self):
|
|
shutil.rmtree(self.stage)
|
|
|
|
def test_app(self):
|
|
"Test parsing a App"
|
|
app = EnumerateApp(
|
|
mozpath.join(self.stage, "comm", "mail", "locales", "l10n.ini"),
|
|
mozpath.join(self.stage, "l10n-central"),
|
|
)
|
|
self.assertListEqual(app.config.allLocales(), ["af", "de", "fr"])
|
|
self.assertEqual(len(app.config.children), 1)
|
|
projectconfig = app.asConfig()
|
|
self.assertListEqual(projectconfig.locales, ["af", "de", "fr"])
|
|
files = ProjectFiles("de", [projectconfig])
|
|
files = list(files)
|
|
self.assertEqual(len(files), 3)
|
|
|
|
l10nfile, reffile, mergefile, test = files[0]
|
|
self.assertListEqual(mozpath.split(l10nfile)[-3:], ["de", "mail", "mail.ftl"])
|
|
self.assertListEqual(
|
|
mozpath.split(reffile)[-4:], ["mail", "locales", "en-US", "mail.ftl"]
|
|
)
|
|
self.assertIsNone(mergefile)
|
|
self.assertSetEqual(test, set())
|
|
|
|
l10nfile, reffile, mergefile, test = files[1]
|
|
self.assertListEqual(
|
|
mozpath.split(l10nfile)[-3:], ["de", "toolkit", "localized.ftl"]
|
|
)
|
|
self.assertListEqual(
|
|
mozpath.split(reffile)[-6:],
|
|
["comm", "mozilla", "toolkit", "locales", "en-US", "localized.ftl"],
|
|
)
|
|
self.assertIsNone(mergefile)
|
|
self.assertSetEqual(test, set())
|
|
|
|
l10nfile, reffile, mergefile, test = files[2]
|
|
self.assertListEqual(
|
|
mozpath.split(l10nfile)[-3:], ["de", "toolkit", "platform.ftl"]
|
|
)
|
|
self.assertListEqual(
|
|
mozpath.split(reffile)[-6:],
|
|
["comm", "mozilla", "toolkit", "locales", "en-US", "platform.ftl"],
|
|
)
|
|
self.assertIsNone(mergefile)
|
|
self.assertSetEqual(test, set())
|
|
|
|
def test_src_app(self):
|
|
"Test parsing a App in source setup"
|
|
# move toolkit to toplevel
|
|
shutil.move(mozpath.join(self.stage, "comm", "mozilla"), self.stage)
|
|
app = EnumerateSourceTreeApp(
|
|
mozpath.join(self.stage, "comm", "mail", "locales", "l10n.ini"),
|
|
self.stage,
|
|
mozpath.join(self.stage, "l10n-central"),
|
|
{"mozilla-central": mozpath.join(self.stage, "mozilla")},
|
|
)
|
|
self.assertListEqual(app.config.allLocales(), ["af", "de", "fr"])
|
|
self.assertEqual(len(app.config.children), 1)
|
|
projectconfig = app.asConfig()
|
|
self.assertListEqual(projectconfig.locales, ["af", "de", "fr"])
|
|
files = ProjectFiles("de", [projectconfig])
|
|
files = list(files)
|
|
self.assertEqual(len(files), 3)
|
|
|
|
l10nfile, reffile, mergefile, test = files[0]
|
|
self.assertListEqual(mozpath.split(l10nfile)[-3:], ["de", "mail", "mail.ftl"])
|
|
self.assertListEqual(
|
|
mozpath.split(reffile)[-4:], ["mail", "locales", "en-US", "mail.ftl"]
|
|
)
|
|
self.assertIsNone(mergefile)
|
|
self.assertSetEqual(test, set())
|
|
|
|
l10nfile, reffile, mergefile, test = files[1]
|
|
self.assertListEqual(
|
|
mozpath.split(l10nfile)[-3:], ["de", "toolkit", "localized.ftl"]
|
|
)
|
|
self.assertListEqual(
|
|
mozpath.split(reffile)[-5:],
|
|
["mozilla", "toolkit", "locales", "en-US", "localized.ftl"],
|
|
)
|
|
self.assertIsNone(mergefile)
|
|
self.assertSetEqual(test, set())
|
|
|
|
l10nfile, reffile, mergefile, test = files[2]
|
|
self.assertListEqual(
|
|
mozpath.split(l10nfile)[-3:], ["de", "toolkit", "platform.ftl"]
|
|
)
|
|
self.assertListEqual(
|
|
mozpath.split(reffile)[-5:],
|
|
["mozilla", "toolkit", "locales", "en-US", "platform.ftl"],
|
|
)
|
|
self.assertIsNone(mergefile)
|
|
self.assertSetEqual(test, set())
|