예제 #1
0
 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'])
예제 #3
0
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)