def setUp(self): super(TestReuploadPackageTranslations, self).setUp() sourcepackagename = self.factory.makeSourcePackageName() distroseries = self.factory.makeDistroSeries() self.sourcepackage = SourcePackage(sourcepackagename, distroseries) self.script = ReuploadPackageTranslations( 'reupload', test_args=[ '-d', distroseries.distribution.name, '-s', distroseries.name, '-p', sourcepackagename.name, '-qqq' ])
def setUp(self): super(TestReuploadPackageTranslations, self).setUp() sourcepackagename = self.factory.makeSourcePackageName() distroseries = self.factory.makeDistroSeries() self.sourcepackage = SourcePackage(sourcepackagename, distroseries) self.script = ReuploadPackageTranslations('reupload', test_args=[ '-d', distroseries.distribution.name, '-s', distroseries.name, '-p', sourcepackagename.name, '-qqq'])
class TestReuploadPackageTranslations(TestCaseWithFactory): """Test `ReuploadPackageTranslations`.""" layer = LaunchpadZopelessLayer def setUp(self): super(TestReuploadPackageTranslations, self).setUp() sourcepackagename = self.factory.makeSourcePackageName() distroseries = self.factory.makeDistroSeries() self.sourcepackage = SourcePackage(sourcepackagename, distroseries) self.script = ReuploadPackageTranslations( 'reupload', test_args=[ '-d', distroseries.distribution.name, '-s', distroseries.name, '-p', sourcepackagename.name, '-qqq' ]) def _uploadAndProcess(self, files_dict): """Fake an upload and cause _processPackage to be run on it. :param files_dict: A dict mapping file paths to file contents. :return: A dict describing the resulting import queue for the package. """ tar_alias = upload_tarball(files_dict) # Force Librarian update transaction.commit() self.script._findPackage = UploadInjector(self.script, tar_alias) self.script.main() self.assertEqual([], self.script.uploadless_packages) # Force Librarian update transaction.commit() return summarize_translations_queue(self.sourcepackage) def test_findPackage(self): # _findPackage finds a SourcePackage by name. self.script._setDistroDetails() found_package = self.script._findPackage( self.sourcepackage.sourcepackagename.name) self.assertEqual(self.sourcepackage, found_package) def test_processPackage_nothing(self): # A package need not have a translations upload. The script # notices this but does nothing about it. self.script.main() self.assertEqual([self.sourcepackage], self.script.uploadless_packages) def test_processPackage(self): # _processPackage will fetch the package's latest translations # upload from the Librarian and re-import it. translation_files = { 'source/po/messages.pot': '# pot', 'source/po/nl.po': '# nl', } queue_summary = self._uploadAndProcess(translation_files) self.assertEqual(filter_paths(translation_files), queue_summary) def test_processPackage_filters_paths(self): # Uploads are filtered just like other Ubuntu tarballs. translation_files = { 'source/foo.pot': '# foo', 'elsewhere/bar.pot': '# bar', } queue_summary = self._uploadAndProcess(translation_files) self.assertEqual({'foo.pot': '# foo'}, queue_summary)
#!/usr/bin/python -S # # Copyright 2009 Canonical Ltd. This software is licensed under the # GNU Affero General Public License version 3 (see the file LICENSE). """Re-upload translations from given packages.""" __metaclass__ = type import _pythonpath from lp.translations.scripts.reupload_translations import ( ReuploadPackageTranslations, ) if __name__ == '__main__': script = ReuploadPackageTranslations('reupload-translations') script.run()
class TestReuploadPackageTranslations(TestCaseWithFactory): """Test `ReuploadPackageTranslations`.""" layer = LaunchpadZopelessLayer def setUp(self): super(TestReuploadPackageTranslations, self).setUp() sourcepackagename = self.factory.makeSourcePackageName() distroseries = self.factory.makeDistroSeries() self.sourcepackage = SourcePackage(sourcepackagename, distroseries) self.script = ReuploadPackageTranslations('reupload', test_args=[ '-d', distroseries.distribution.name, '-s', distroseries.name, '-p', sourcepackagename.name, '-qqq']) def _uploadAndProcess(self, files_dict): """Fake an upload and cause _processPackage to be run on it. :param files_dict: A dict mapping file paths to file contents. :return: A dict describing the resulting import queue for the package. """ tar_alias = upload_tarball(files_dict) # Force Librarian update transaction.commit() self.script._findPackage = UploadInjector(self.script, tar_alias) self.script.main() self.assertEqual([], self.script.uploadless_packages) # Force Librarian update transaction.commit() return summarize_translations_queue(self.sourcepackage) def test_findPackage(self): # _findPackage finds a SourcePackage by name. self.script._setDistroDetails() found_package = self.script._findPackage( self.sourcepackage.sourcepackagename.name) self.assertEqual(self.sourcepackage, found_package) def test_processPackage_nothing(self): # A package need not have a translations upload. The script # notices this but does nothing about it. self.script.main() self.assertEqual( [self.sourcepackage], self.script.uploadless_packages) def test_processPackage(self): # _processPackage will fetch the package's latest translations # upload from the Librarian and re-import it. translation_files = { 'source/po/messages.pot': '# pot', 'source/po/nl.po': '# nl', } queue_summary = self._uploadAndProcess(translation_files) self.assertEqual(filter_paths(translation_files), queue_summary) def test_processPackage_filters_paths(self): # Uploads are filtered just like other Ubuntu tarballs. translation_files = { 'source/foo.pot': '# foo', 'elsewhere/bar.pot': '# bar', } queue_summary = self._uploadAndProcess(translation_files) self.assertEqual({'foo.pot': '# foo'}, queue_summary)