Esempio n. 1
0
    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)
Esempio n. 2
0
    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))
Esempio n. 3
0
    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))
Esempio n. 4
0
    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)
Esempio n. 5
0
    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()
Esempio n. 6
0
    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))
Esempio n. 8
0
    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'))
Esempio n. 9
0
 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)
Esempio n. 10
0
    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)
Esempio n. 11
0
 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))
Esempio n. 12
0
    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))
Esempio n. 13
0
    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))
Esempio n. 14
0
    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)
Esempio n. 15
0
 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))
Esempio n. 16
0
    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)
Esempio n. 17
0
    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)
Esempio n. 18
0
    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)
Esempio n. 19
0
    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)