Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
import unittest
import mozunit
import six
from mozpack.chrome.manifest import Manifest, ManifestContent, ManifestLocale
from mozpack.copier import FileRegistry
from mozpack.files import GeneratedFile, ManifestFile
from mozpack.packager import l10n
from test_packager import MockFinder
class TestL10NRepack(unittest.TestCase):
def test_l10n_repack(self):
foo = GeneratedFile(b"foo")
foobar = GeneratedFile(b"foobar")
qux = GeneratedFile(b"qux")
bar = GeneratedFile(b"bar")
baz = GeneratedFile(b"baz")
dict_aa = GeneratedFile(b"dict_aa")
dict_bb = GeneratedFile(b"dict_bb")
dict_cc = GeneratedFile(b"dict_cc")
barbaz = GeneratedFile(b"barbaz")
lst = GeneratedFile(b"foo\nbar")
app_finder = MockFinder(
{
"bar/foo": foo,
"chrome/foo/foobar": foobar,
"chrome/qux/qux.properties": qux,
"chrome/qux/baz/baz.properties": baz,
"chrome/chrome.manifest": ManifestFile(
"chrome",
[
ManifestContent("chrome", "foo", "foo/"),
ManifestLocale("chrome", "qux", "en-US", "qux/"),
],
),
"chrome.manifest": ManifestFile(
"", [Manifest("", "chrome/chrome.manifest")]
),
"dict/aa": dict_aa,
"app/chrome/bar/barbaz.dtd": barbaz,
"app/chrome/chrome.manifest": ManifestFile(
"app/chrome", [ManifestLocale("app/chrome", "bar", "en-US", "bar/")]
),
"app/chrome.manifest": ManifestFile(
"app", [Manifest("app", "chrome/chrome.manifest")]
),
"app/dict/bb": dict_bb,
"app/dict/cc": dict_cc,
"app/chrome/bar/search/foo.xml": foo,
"app/chrome/bar/search/bar.xml": bar,
"app/chrome/bar/search/lst.txt": lst,
"META-INF/foo": foo, # Stripped.
"inner/META-INF/foo": foo, # Not stripped.
"app/META-INF/foo": foo, # Stripped.
"app/inner/META-INF/foo": foo, # Not stripped.
}
)
app_finder.jarlogs = {}
app_finder.base = "app"
foo_l10n = GeneratedFile(b"foo_l10n")
qux_l10n = GeneratedFile(b"qux_l10n")
baz_l10n = GeneratedFile(b"baz_l10n")
barbaz_l10n = GeneratedFile(b"barbaz_l10n")
lst_l10n = GeneratedFile(b"foo\nqux")
l10n_finder = MockFinder(
{
"chrome/qux-l10n/qux.properties": qux_l10n,
"chrome/qux-l10n/baz/baz.properties": baz_l10n,
"chrome/chrome.manifest": ManifestFile(
"chrome",
[
ManifestLocale("chrome", "qux", "x-test", "qux-l10n/"),
],
),
"chrome.manifest": ManifestFile(
"", [Manifest("", "chrome/chrome.manifest")]
),
"dict/bb": dict_bb,
"dict/cc": dict_cc,
"app/chrome/bar-l10n/barbaz.dtd": barbaz_l10n,
"app/chrome/chrome.manifest": ManifestFile(
"app/chrome",
[ManifestLocale("app/chrome", "bar", "x-test", "bar-l10n/")],
),
"app/chrome.manifest": ManifestFile(
"app", [Manifest("app", "chrome/chrome.manifest")]
),
"app/dict/aa": dict_aa,
"app/chrome/bar-l10n/search/foo.xml": foo_l10n,
"app/chrome/bar-l10n/search/qux.xml": qux_l10n,
"app/chrome/bar-l10n/search/lst.txt": lst_l10n,
}
)
l10n_finder.base = "l10n"
copier = FileRegistry()
formatter = l10n.FlatFormatter(copier)
l10n._repack(
app_finder,
l10n_finder,
copier,
formatter,
["dict", "chrome/**/search/*.xml"],
)
self.maxDiff = None
repacked = {
"bar/foo": foo,
"chrome/foo/foobar": foobar,
"chrome/qux-l10n/qux.properties": qux_l10n,
"chrome/qux-l10n/baz/baz.properties": baz_l10n,
"chrome/chrome.manifest": ManifestFile(
"chrome",
[
ManifestContent("chrome", "foo", "foo/"),
ManifestLocale("chrome", "qux", "x-test", "qux-l10n/"),
],
),
"chrome.manifest": ManifestFile(
"", [Manifest("", "chrome/chrome.manifest")]
),
"dict/bb": dict_bb,
"dict/cc": dict_cc,
"app/chrome/bar-l10n/barbaz.dtd": barbaz_l10n,
"app/chrome/chrome.manifest": ManifestFile(
"app/chrome",
[ManifestLocale("app/chrome", "bar", "x-test", "bar-l10n/")],
),
"app/chrome.manifest": ManifestFile(
"app", [Manifest("app", "chrome/chrome.manifest")]
),
"app/dict/aa": dict_aa,
"app/chrome/bar-l10n/search/foo.xml": foo_l10n,
"app/chrome/bar-l10n/search/qux.xml": qux_l10n,
"app/chrome/bar-l10n/search/lst.txt": lst_l10n,
"inner/META-INF/foo": foo,
"app/inner/META-INF/foo": foo,
}
self.assertEqual(
dict((p, f.open().read()) for p, f in copier),
dict((p, f.open().read()) for p, f in six.iteritems(repacked)),
)
if __name__ == "__main__":
mozunit.main()