class TestGetGuessedPOFile(TestCaseWithFactory): """Test matching of PO files with respective templates and languages.""" layer = LaunchpadZopelessLayer def setUp(self): """Set up context to test in.""" super(TestGetGuessedPOFile, self).setUp() self.queue = getUtility(ITranslationImportQueue) self.factory = LaunchpadObjectFactory() self.distribution = self.factory.makeDistribution('boohoo') self.distroseries = self.factory.makeDistroSeries(self.distribution) self.uploaderperson = self.factory.makePerson() def createSourcePackageAndPOTemplate(self, sourcepackagename, template): """Create and return a source package and a POTemplate. Creates a source package in the self.distroseries with the passed-in sourcepackagename, and a template in that sourcepackage named template with the identical translation domain. """ target_sourcepackage = self.factory.makeSourcePackage( distroseries=self.distroseries) pot = self.factory.makePOTemplate( sourcepackagename=target_sourcepackage.sourcepackagename, distroseries=target_sourcepackage.distroseries, name=template, translation_domain=template) spn = self.factory.makeSourcePackageName(sourcepackagename) l10n_sourcepackage = self.factory.makeSourcePackage( sourcepackagename=spn, distroseries=self.distroseries) return (l10n_sourcepackage, pot) def _getGuessedPOFile(self, source_name, template_path): """Return new POTemplate and matched POFile for package and template. """ template_name = os.path.basename(template_path) package, pot = self.createSourcePackageAndPOTemplate( source_name, template_name) queue_entry = self.queue.addOrUpdateEntry( '%s.po' % template_path, template_name, True, self.uploaderperson, distroseries=package.distroseries, sourcepackagename=package.sourcepackagename) pofile = queue_entry.getGuessedPOFile() return (pot, pofile) def test_KDE4_language(self): # PO files 'something.po' in a package named like 'kde-l10n-sr' # belong in the 'something' translation domain as Serbian (sr) # translations. potemplate, pofile = self._getGuessedPOFile('kde-l10n-sr', 'template') serbian = getUtility(ILanguageSet).getLanguageByCode('sr') self.assertEqual(potemplate, pofile.potemplate) self.assertEqual(serbian, pofile.language) def test_KDE4_language_country(self): # If package name is kde-l10n-engb, it needs to be mapped # to British English (en_GB). potemplate, pofile = self._getGuessedPOFile('kde-l10n-engb', 'template') real_english = getUtility(ILanguageSet).getLanguageByCode('en_GB') self.assertEqual(potemplate, pofile.potemplate) self.assertEqual(real_english, pofile.language) def test_KDE4_language_variant(self): # If package name is kde-l10n-ca-valencia, it needs to be mapped # to Valencian variant of Catalan (ca@valencia). catalan_valencia = self.factory.makeLanguage('ca@valencia', 'Catalan Valencia') potemplate, pofile = self._getGuessedPOFile('kde-l10n-ca-valencia', 'template') self.assertEqual(potemplate, pofile.potemplate) self.assertEqual(catalan_valencia, pofile.language) def test_KDE4_language_subvariant(self): # PO file 'sr@test/something.po' in a package named like # 'kde-l10n-sr' belong in the 'something' translation domain # for "sr@test" language translations. serbian_test = self.factory.makeLanguage('sr@test') potemplate, pofile = self._getGuessedPOFile('kde-l10n-sr', 'sr@test/template') self.assertEqual(potemplate, pofile.potemplate) self.assertEqual(serbian_test, pofile.language) def test_KDE4_language_at_sign(self): # PO file 'blah@test/something.po' in a package named like # 'kde-l10n-sr' belong in the 'something' translation domain # for "sr" language translations. serbian = getUtility(ILanguageSet).getLanguageByCode('sr') potemplate, pofile = self._getGuessedPOFile( 'kde-l10n-sr', 'source/blah@test/template') self.assertEqual(potemplate, pofile.potemplate) self.assertEqual(serbian, pofile.language)
class TestGetGuessedPOFile(TestCaseWithFactory): """Test matching of PO files with respective templates and languages.""" layer = LaunchpadZopelessLayer def setUp(self): """Set up context to test in.""" super(TestGetGuessedPOFile, self).setUp() self.queue = getUtility(ITranslationImportQueue) self.factory = LaunchpadObjectFactory() self.distribution = self.factory.makeDistribution('boohoo') self.distroseries = self.factory.makeDistroSeries(self.distribution) self.uploaderperson = self.factory.makePerson() def createSourcePackageAndPOTemplate(self, sourcepackagename, template): """Create and return a source package and a POTemplate. Creates a source package in the self.distroseries with the passed-in sourcepackagename, and a template in that sourcepackage named template with the identical translation domain. """ target_sourcepackage = self.factory.makeSourcePackage( distroseries=self.distroseries) pot = self.factory.makePOTemplate( sourcepackagename=target_sourcepackage.sourcepackagename, distroseries=target_sourcepackage.distroseries, name=template, translation_domain=template) spn = self.factory.makeSourcePackageName(sourcepackagename) l10n_sourcepackage = self.factory.makeSourcePackage( sourcepackagename=spn, distroseries=self.distroseries) return (l10n_sourcepackage, pot) def _getGuessedPOFile(self, source_name, template_path): """Return new POTemplate and matched POFile for package and template. """ template_name = os.path.basename(template_path) package, pot = self.createSourcePackageAndPOTemplate( source_name, template_name) queue_entry = self.queue.addOrUpdateEntry( '%s.po' % template_path, template_name, True, self.uploaderperson, distroseries=package.distroseries, sourcepackagename=package.sourcepackagename) pofile = queue_entry.getGuessedPOFile() return (pot, pofile) def test_KDE4_language(self): # PO files 'something.po' in a package named like 'kde-l10n-sr' # belong in the 'something' translation domain as Serbian (sr) # translations. potemplate, pofile = self._getGuessedPOFile( 'kde-l10n-sr', 'template') serbian = getUtility(ILanguageSet).getLanguageByCode('sr') self.assertEquals(potemplate, pofile.potemplate) self.assertEquals(serbian, pofile.language) def test_KDE4_language_country(self): # If package name is kde-l10n-engb, it needs to be mapped # to British English (en_GB). potemplate, pofile = self._getGuessedPOFile( 'kde-l10n-engb', 'template') real_english = getUtility(ILanguageSet).getLanguageByCode('en_GB') self.assertEquals(potemplate, pofile.potemplate) self.assertEquals(real_english, pofile.language) def test_KDE4_language_variant(self): # If package name is kde-l10n-ca-valencia, it needs to be mapped # to Valencian variant of Catalan (ca@valencia). catalan_valencia = self.factory.makeLanguage( 'ca@valencia', 'Catalan Valencia') potemplate, pofile = self._getGuessedPOFile( 'kde-l10n-ca-valencia', 'template') self.assertEquals(potemplate, pofile.potemplate) self.assertEquals(catalan_valencia, pofile.language) def test_KDE4_language_subvariant(self): # PO file 'sr@test/something.po' in a package named like # 'kde-l10n-sr' belong in the 'something' translation domain # for "sr@test" language translations. serbian_test = self.factory.makeLanguage('sr@test') potemplate, pofile = self._getGuessedPOFile( 'kde-l10n-sr', 'sr@test/template') self.assertEquals(potemplate, pofile.potemplate) self.assertEquals(serbian_test, pofile.language) def test_KDE4_language_at_sign(self): # PO file 'blah@test/something.po' in a package named like # 'kde-l10n-sr' belong in the 'something' translation domain # for "sr" language translations. serbian = getUtility(ILanguageSet).getLanguageByCode('sr') potemplate, pofile = self._getGuessedPOFile( 'kde-l10n-sr', 'source/blah@test/template') self.assertEquals(potemplate, pofile.potemplate) self.assertEquals(serbian, pofile.language)