# 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 from test_packager import MockFinder from mozpack.packager import l10n from mozpack.files import ( GeneratedFile, ManifestFile, ) from mozpack.chrome.manifest import ( Manifest, ManifestLocale, ManifestContent, ) from mozpack.copier import FileRegistry from mozpack.packager.formats import FlatFormatter class TestL10NRepack(unittest.TestCase): def test_l10n_repack(self): foo = GeneratedFile('foo') foobar = GeneratedFile('foobar') qux = GeneratedFile('qux') bar = GeneratedFile('bar') baz = GeneratedFile('baz') dict_aa = GeneratedFile('dict_aa') dict_bb = GeneratedFile('dict_bb') dict_cc = GeneratedFile('dict_cc') barbaz = GeneratedFile('barbaz') lst = GeneratedFile('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, }) app_finder.jarlogs = {} app_finder.base = 'app' foo_l10n = GeneratedFile('foo_l10n') qux_l10n = GeneratedFile('qux_l10n') baz_l10n = GeneratedFile('baz_l10n') barbaz_l10n = GeneratedFile('barbaz_l10n') lst_l10n = GeneratedFile('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 = 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, } self.assertEqual( dict((p, f.open().read()) for p, f in copier), dict((p, f.open().read()) for p, f in repacked.iteritems()) ) if __name__ == '__main__': mozunit.main()