jenkins-bot has submitted this change and it was merged.
Change subject: [bugfix] L10N tests for site.lang key
......................................................................
[bugfix] L10N tests for site.lang key
Keys of i18n json files has been changed from site.code to site.lang.
After updating the L10N test is broken due to some sites has different
lang and code property.
- Now check templates for all sites in languages_by_size list.
- skip known problems
- create method name with code
- Check whether a given language has a corresponding site
- Give more precise message for assert error
The original commit in the master branch fdef82ff introduced a problem with
testing that it needed to query many Wikipedias to get their language for the
translations. The follow-up patch 5e83b6e0 is incorporated into this patch.
Co-Author: Fabian Neundorf <CommodoreFabianus(a)gmx.de>
Change-Id: I43131490147846d3486a6d457dc055ecb7593077
---
M tests/l10n_tests.py
1 file changed, 45 insertions(+), 21 deletions(-)
Approvals:
John Vandenberg: Looks good to me, approved
jenkins-bot: Verified
diff --git a/tests/l10n_tests.py b/tests/l10n_tests.py
index 46981a7..294914a 100644
--- a/tests/l10n_tests.py
+++ b/tests/l10n_tests.py
@@ -29,39 +29,43 @@
def __new__(cls, name, bases, dct):
"""Create the new class."""
- # this comment is to avoid senseless flake8 warning
-
- def test_method(msg, code):
+ def test_method(site):
def test_template(self):
"""Test validity of template."""
+ lang = site.lang
+ if lang not in keys:
+ return
+ msg = i18n.twtranslate(lang, package, fallback=False)
if msg:
# check whether the message contains a template
template = re.findall(u'.*?{{(.*?)[|}]', msg)
self.assertTrue(template)
- if template:
- # check whether site is valid
- site = pywikibot.Site('en', 'wikipedia')
- self.assertTrue(code in site.languages())
-
- # check whether template exists
- title = template[0]
- site = pywikibot.Site(code, 'wikipedia')
- page = pywikibot.Page(site, title, ns=10)
- self.assertTrue(page.exists())
+ # known problem
+ if site.code == 'simple':
+ raise unittest.SkipTest(
+ "'simple' wiki has 'en' language code
but "
+ "missing template. Must be solved by the "
+ "corresponding script.")
+ # check whether template exists
+ title = template[0]
+ page = pywikibot.Page(site, title, ns=10)
+ self.assertTrue(page.exists())
return test_template
# create test methods for package messages processed by unittest
+ site = pywikibot.Site(dct['code'], dct['family'])
+ codes = site.family.languages_by_size
+ del site
for package in PACKAGES:
- for lang in i18n.twget_keys(package):
- template_msg = i18n.twtranslate(lang, package, fallback=False)
- if template_msg is None:
- continue
- test_name = "test_%s_%s" % (package.replace('-',
'_'), lang)
- dct[test_name] = test_method(template_msg, lang)
- return type.__new__(cls, name, bases, dct)
+ keys = i18n.twget_keys(package)
+ for code in codes:
+ current_site = pywikibot.Site(code, dct['family'])
+ test_name = ("test_%s_%s" % (package,
code)).replace('-', '_')
+ dct[test_name] = test_method(current_site)
+ return super(TestValidTemplateMeta, cls).__new__(cls, name, bases, dct)
@add_metaclass
@@ -71,7 +75,27 @@
__metaclass__ = TestValidTemplateMeta
- net = True # magic flag tells jenkins to not run the test.
+ family = 'wikipedia'
+ code = 'en'
+
+
+class TestSites(TestCase):
+
+ """Other test L10N cases processed by unittest."""
+
+ family = 'wikipedia'
+ code = 'en'
+
+ def test_valid_sites(self):
+ """Test whether language key has a corresponding
site."""
+ codes = self.site.family.languages_by_size
+ languages = [pywikibot.Site(code, self.family).lang for code in codes]
+ for package in PACKAGES:
+ keys = i18n.twget_keys(package)
+ for key in keys:
+ self.assertIn(key, languages,
+ "'%s' - json key '%s' is not a site
language"
+ % (package, key))
if __name__ == '__main__':
--
To view, visit
https://gerrit.wikimedia.org/r/223881
To unsubscribe, visit
https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I43131490147846d3486a6d457dc055ecb7593077
Gerrit-PatchSet: 10
Gerrit-Project: pywikibot/core
Gerrit-Branch: 2.0
Gerrit-Owner: Merlijn van Deen <valhallasw(a)arctus.nl>
Gerrit-Reviewer: John Vandenberg <jayvdb(a)gmail.com>
Gerrit-Reviewer: Ladsgroup <ladsgroup(a)gmail.com>
Gerrit-Reviewer: Merlijn van Deen <valhallasw(a)arctus.nl>
Gerrit-Reviewer: XZise <CommodoreFabianus(a)gmx.de>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot <>