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_template(self): """Test validity of template.""" 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()) return test_template # create test methods for package messages processed by unittest 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)
def setUpClass(cls): """Verify that a translation does not yet exist.""" super().setUpClass() if cls.code in i18n.twget_keys(cls.message): raise unittest.SkipTest('{} has a translation for {}'.format( cls.code, cls.message))
def setUpClass(cls): """Verify that a translation does not yet exist.""" super(InputTestCase, cls).setUpClass() if cls.code in i18n.twget_keys(cls.message): raise unittest.SkipTest('%s has a translation for %s' % (cls.code, cls.message))
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_template(self): """Test validity of template.""" 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()) return test_template # create test methods for package messages processed by unittest 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)
def setUpClass(cls): if cls.code in i18n.twget_keys('pywikibot-enter-category-name'): raise unittest.SkipTest( '%s has a translation for %s' % (cls.code, 'pywikibot-enter-category-name')) super(InputTestCase, cls).setUpClass()
def setUpClass(cls): """Verify that a translation does not yet exist.""" super(InputTestCase, cls).setUpClass() if cls.code in i18n.twget_keys('pywikibot-enter-category-name'): raise unittest.SkipTest( '%s has a translation for %s' % (cls.code, 'pywikibot-enter-category-name'))
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))
def setUpClass(cls): """Verify that a translation does not yet exist.""" super(InputTestCase, cls).setUpClass() if cls.code in i18n.twget_keys('pywikibot-enter-category-name'): raise unittest.SkipTest( '%s has a translation for %s' % (cls.code, 'pywikibot-enter-category-name'))
def test_valid_package(self): """Test whether package has entries.""" for package in chain( ['cosmetic_changes-standalone', 'pywikibot-cosmetic-changes'], PACKAGES): keys = i18n.twget_keys(package) with self.subTest(package=package): self.assertIsNotEmpty(keys) self.assertIn('en', keys)
def __new__(cls, name, bases, dct): """Create the new class.""" def test_method(site, package): def test_template(self): """Test validity of template.""" lang = site.lang if lang not in keys: return if not i18n.twhas_key(lang, package): return msg = i18n.twtranslate(lang, package, fallback=False) # check whether the message contains a template templates = extract_templates_and_params_regex_simple(msg) self.assertIsInstance(templates, list) self.assertIsNotEmpty(templates) # known problems if (package == PACKAGES[0] and site.code in ['simple', 'test2'] or package == PACKAGES[1] and site.code == 'test'): raise unittest.SkipTest( "{site} wiki has '{site.lang}' language code but " "missing template for package '{package}'. Must be " 'solved by the corresponding script.'.format( site=site, package=package)) # check whether template exists title = templates[0][0] page = pywikibot.Page(site, title, ns=10) self.assertTrue(page.exists(), msg='Invalid L10N in package "{package}"\n' 'template "{title}" does not exist for lang ' '"{site.lang}" on site "{site}"'.format( package=package, title=title, site=site)) 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: keys = i18n.twget_keys(package) for code in codes: current_site = pywikibot.Site(code, dct['family']) test_name = ('test_{}_{}'.format(package, code)).replace('-', '_') cls.add_method(dct, test_name, test_method(current_site, package), doc_suffix='{} and language {}'.format( package, code)) return super(TestValidTemplateMeta, cls).__new__(cls, name, bases, dct)
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, "'{}' - json key '{}' is not a site language" .format(package, key))
def setUpClass(cls): """Verify that a translation does not yet exist.""" if 'userinterface_lang' in pywikibot.config.__modified__: raise unittest.SkipTest( 'user-config has a modified userinterface_lang') super(InputTestCase, cls).setUpClass() if cls.code in i18n.twget_keys(cls.message): raise unittest.SkipTest( '{0!s} has a translation for {1!s}'.format(cls.code, cls.message))
def setUpClass(cls): """Verify that a translation does not yet exist.""" if 'userinterface_lang' in pywikibot.config.__modified__: raise unittest.SkipTest( 'user-config has a modified userinterface_lang') super(InputTestCase, cls).setUpClass() if cls.code in i18n.twget_keys(cls.message): raise unittest.SkipTest('%s has a translation for %s' % (cls.code, cls.message))
def __new__(cls, name, bases, dct): """Create the new class.""" 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 templates = extract_templates_and_params_regex_simple(msg) self.assertIsInstance(templates, list) self.assertGreater(len(templates), 0) # 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 = templates[0][0] page = pywikibot.Page(site, title, ns=10) self.assertTrue( page.exists(), msg='Invalid L10N in package "{package}"\n' 'template "{title}" does not exist for lang ' '"{site.lang}" on site "{site}"'.format( package=package, title=title, site=site)) return test_template # create test methods for package messages processed by unittest if not i18n.messages_available(): raise unittest.SkipTest( "i18n messages package '%s' not available." % i18n._messages_package_name) site = pywikibot.Site(dct['code'], dct['family']) codes = site.family.languages_by_size del site for package in PACKAGES: keys = i18n.twget_keys(package) for code in codes: current_site = pywikibot.Site(code, dct['family']) test_name = ("test_%s_%s" % (package, code)).replace('-', '_') cls.add_method(dct, test_name, test_method(current_site), doc_suffix='{0} and language {1}'.format( package, code)) return super(TestValidTemplateMeta, cls).__new__(cls, name, bases, dct)
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} # langs used by foreign wikis languages.update(('pt-br', 'zh-tw')) for package in PACKAGES: keys = i18n.twget_keys(package) for key in keys: with self.subTest(package=package, key=key): self.assertIn( key, languages, "json key '{}' is not a site language".format(key))
def __new__(cls, name, bases, dct): """Create the new class.""" 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 templates = extract_templates_and_params_regex_simple(msg) self.assertIsInstance(templates, list) self.assertGreater(len(templates), 0) # 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 = templates[0][0] page = pywikibot.Page(site, title, ns=10) self.assertTrue(page.exists()) return test_template # create test methods for package messages processed by unittest if not i18n.messages_available(): raise unittest.SkipTest("i18n messages package '%s' not available." % i18n._messages_package_name) site = pywikibot.Site(dct['code'], dct['family']) codes = site.family.languages_by_size del site for package in PACKAGES: keys = i18n.twget_keys(package) for code in codes: current_site = pywikibot.Site(code, dct['family']) test_name = ("test_%s_%s" % (package, code)).replace('-', '_') cls.add_method( dct, test_name, test_method(current_site), doc_suffix='{0} and language {1}'.format( package, code)) return super(TestValidTemplateMeta, cls).__new__(cls, name, bases, dct)
def __new__(cls, name, bases, dct): """Create the new class.""" # this comment is to avoid senseless flake8 warning def test_method(msg, site): def test_template(self): """Test validity of template.""" if msg: # check whether the message contains a template template = re.findall(u'.*?{{(.*?)[|}]', msg) self.assertTrue(template) # 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.") if template: # 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('en', 'wikipedia') codes = site.family.languages_by_size del site for package in PACKAGES: keys = i18n.twget_keys(package) for code in codes: current_site = pywikibot.Site(code, 'wikipedia') lang = current_site.lang if lang not in keys: continue template_msg = i18n.twtranslate(lang, package, fallback=False) if template_msg is None: continue test_name = ("test_%s_%s_%s" % (package, lang, code)).replace('-', '_') dct[test_name] = test_method(template_msg, current_site) return type.__new__(cls, name, bases, dct)
def __new__(cls, name, bases, dct): """Create the new class.""" 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) # 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 if not i18n.messages_available(): raise unittest.SkipTest( "i18n messages package '%s' not available." % i18n._messages_package_name) site = pywikibot.Site(dct['code'], dct['family']) codes = site.family.languages_by_size del site for package in PACKAGES: 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) dct[test_name].__doc__ = 'Test {0} with language {1}'.format( package, code) return super(TestValidTemplateMeta, cls).__new__(cls, name, bases, dct)
def __new__(cls, name, bases, dct): """Create the new class.""" 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) # 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: 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)