Пример #1
0
 def test_interwiki_mainpage(self):
     """Test that Link allow links without a title to the main page."""
     link = Link('en:', self.get_site())
     link.parse()
     self.assertEqual(link.site, self.get_site())
     self.assertEqual(link.title, '')
     self.assertEqual(link.namespace, 0)
 def test_indirect_non_local(self):
     """Test en:translatewiki:Main Page on English Wikipedia."""
     link = Link('en:translatewiki:Main Page', self.get_site('wp'))
     link.parse()
     self.assertEqual(link.site, self.get_site('tw'))
     self.assertEqual(link.title, 'Main Page')
     self.assertEqual(link.namespace, 0)
Пример #3
0
 def test_partially_qualified_NS1_code(self):
     """Test 'wikipedia:Talk:Main Page' on enws is ns 1."""
     config.mylang = 'en'
     config.family = 'wikisource'
     link = Link('wikipedia:Talk:Main Page')
     link.parse()
     self.assertEqual(link.site, self.get_site())
     self.assertEqual(link.title, 'Main Page')
     self.assertEqual(link.namespace, 1)
Пример #4
0
 def test_partially_qualified_NS1_family(self):
     """Test 'en:Talk:Main Page' on dewp is namespace 1."""
     config.mylang = 'de'
     config.family = 'wikipedia'
     link = Link('en:Talk:Main Page')
     link.parse()
     self.assertEqual(link.site, self.get_site())
     self.assertEqual(link.title, 'Main Page')
     self.assertEqual(link.namespace, 1)
Пример #5
0
 def test_fully_qualified_NS1_code(self):
     """Test ':species:species:Talk:Main Page' on species is namespace 1."""
     config.mylang = 'en'
     config.family = 'wikipedia'
     link = Link(':species:species:Talk:Main Page')
     link.parse()
     self.assertEqual(link.site, self.get_site())
     self.assertEqual(link.title, 'Main Page')
     self.assertEqual(link.namespace, 1)
Пример #6
0
 def test_fully_qualified_NS1_family(self):
     """Test ':wikidata:testwiki:Talk:Q6' on enwp is namespace 1."""
     config.mylang = 'en'
     config.family = 'wikipedia'
     link = Link(':wikidata:testwiki:Talk:Q6')
     link.parse()
     self.assertEqual(link.site, self.get_site('test.wp'))
     self.assertEqual(link.title, 'Q6')
     self.assertEqual(link.namespace, 1)
Пример #7
0
 def test_fully_qualified_NS0_code(self):
     """Test ':testwiki:wikidata:Q6' on enwp is namespace 0."""
     config.mylang = 'en'
     config.family = 'wikipedia'
     link = Link(':testwiki:wikidata:Q6')
     link.parse()
     self.assertEqual(link.site, self.get_site('wikidata'))
     self.assertEqual(link.title, 'Q6')
     self.assertEqual(link.namespace, 0)
Пример #8
0
 def test_fully_qualified_NS1_family(self):
     """Test ':wikipedia:en:Talk:Main Page' on wikidata is namespace 1."""
     config.mylang = 'wikidata'
     config.family = 'wikidata'
     link = Link(':wikipedia:en:Talk:Main Page')
     link.parse()
     self.assertEqual(link.site, self.get_site('enwp'))
     self.assertEqual(link.title, 'Main Page')
     self.assertEqual(link.namespace, 1)
Пример #9
0
 def test_fully_qualified_NS0_family(self):
     """Test ':wikipedia:en:Main Page' on enws is namespace 0."""
     config.mylang = 'en'
     config.family = 'wikisource'
     link = Link(':wikipedia:en:Main Page')
     link.parse()
     self.assertEqual(link.site, self.get_site('enwp'))
     self.assertEqual(link.title, 'Main Page')
     self.assertEqual(link.namespace, 0)
Пример #10
0
 def test_partially_qualified_NS1_family(self):
     """Test that Link uses config.family for namespace 1."""
     config.mylang = 'de'
     config.family = 'wikipedia'
     link = Link('en:Talk:Main Page')
     link.parse()
     self.assertEqual(link.site, self.get_site())
     self.assertEqual(link.title, 'Main Page')
     self.assertEqual(link.namespace, 1)
Пример #11
0
 def test_partially_qualified_NS0_family(self):
     """Test that Link uses config.family for namespace 0."""
     config.mylang = 'de'
     config.family = 'wikipedia'
     link = Link('en:Main Page')
     link.parse()
     self.assertEqual(link.site, self.get_site())
     self.assertEqual(link.title, 'Main Page')
     self.assertEqual(link.namespace, 0)
Пример #12
0
 def test_fully_qualified_NS0_family(self):
     """Test 'wikipedia:en:Main Page' on enws is namespace 0."""
     config.mylang = 'en'
     config.family = 'wikisource'
     link = Link('wikipedia:en:Main Page')
     link.parse()
     self.assertEqual(link.site, self.get_site('enwp'))
     self.assertEqual(link.title, 'Main Page')
     self.assertEqual(link.namespace, 0)
Пример #13
0
 def test_fully_qualified_NS1_code(self):
     """Test ':testwiki:wikidata:Talk:Q6' on enwp is namespace 1."""
     config.mylang = 'en'
     config.family = 'wikipedia'
     link = Link(':testwiki:wikidata:Talk:Q6')
     link.parse()
     self.assertEqual(link.site, self.get_site('wikidata'))
     self.assertEqual(link.title, 'Q6')
     self.assertEqual(link.namespace, 1)
Пример #14
0
 def test_partially_qualified_NS0_code(self):
     """Test ':wikipedia:Main Page' on enwp is namespace 4."""
     config.mylang = 'en'
     config.family = 'wikipedia'
     link = Link(':wikipedia:Main Page')
     link.parse()
     self.assertEqual(link.site, self.get_site())
     self.assertEqual(link.title, 'Main Page')
     self.assertEqual(link.namespace, 4)
Пример #15
0
 def test_partially_qualified_NS1_code(self):
     """Test 'wikipedia:Talk:Main Page' on enws is ns 1."""
     config.mylang = 'en'
     config.family = 'wikisource'
     link = Link('wikipedia:Talk:Main Page')
     link.parse()
     self.assertEqual(link.site, self.get_site())
     self.assertEqual(link.title, 'Main Page')
     self.assertEqual(link.namespace, 1)
Пример #16
0
 def test_partially_qualified_NS0_family(self):
     """Test 'en:Main Page' on dewp  is namespace 0."""
     config.mylang = 'de'
     config.family = 'wikipedia'
     link = Link('en:Main Page')
     link.parse()
     self.assertEqual(link.site, self.get_site())
     self.assertEqual(link.title, 'Main Page')
     self.assertEqual(link.namespace, 0)
Пример #17
0
 def test_fully_qualified_NS0_family(self):
     """Test ':wikidata:testwiki:Q6' on enwp is namespace 0."""
     config.mylang = 'en'
     config.family = 'wikipedia'
     link = Link(':wikidata:testwiki:Q6')
     link.parse()
     self.assertEqual(link.site, self.get_site('test.wp'))
     self.assertEqual(link.title, 'Q6')
     self.assertEqual(link.namespace, 0)
Пример #18
0
 def test_fully_qualified_NS1_family(self):
     """Test 'wikipedia:en:Talk:Main Page' on wikidata is namespace 1."""
     config.mylang = 'wikidata'
     config.family = 'wikidata'
     link = Link('wikipedia:en:Talk:Main Page')
     link.parse()
     self.assertEqual(link.site, self.get_site('enwp'))
     self.assertEqual(link.title, 'Main Page')
     self.assertEqual(link.namespace, 1)
Пример #19
0
 def test_fully_qualified_NS0_code(self):
     """Test ':en:wikipedia:Main Page' on enwp is namespace 4."""
     config.mylang = 'en'
     config.family = 'wikipedia'
     link = Link(':en:wikipedia:Main Page')
     link.parse()
     self.assertEqual(link.site, self.get_site())
     self.assertEqual(link.title, 'Main Page')
     self.assertEqual(link.namespace, 4)
Пример #20
0
 def test_fully_qualified_NS1_family(self):
     """Test 'wikidata:testwiki:Talk:Q6' on enwp is namespace 1."""
     config.mylang = 'en'
     config.family = 'wikipedia'
     link = Link('wikidata:testwiki:Talk:Q6')
     link.parse()
     self.assertEqual(link.site, pywikibot.Site('test', 'wikipedia'))
     self.assertEqual(link.title, 'Q6')
     self.assertEqual(link.namespace, 1)
Пример #21
0
 def test_fully_qualified_NS1_code(self):
     """Test 'species:Talk:Main Page' on enwp is namespace 1."""
     config.mylang = 'en'
     config.family = 'wikipedia'
     link = Link('species:Talk:Main Page')
     link.parse()
     self.assertEqual(link.site, self.get_site())
     self.assertEqual(link.title, 'Main Page')
     self.assertEqual(link.namespace, 1)
Пример #22
0
 def test_fully_qualified_NS1(self):
     """Test prefixed links with 'Talk:Q6' on enwp is namespace 1."""
     test = [('testwiki:wikidata', 'wikidata:wikidata'),
             ('wikidata:testwiki', 'wikipedia:test')]
     for linkprefix, sitetitle in test:
         with self.subTest(pattern=linkprefix):
             link = Link(linkprefix + ':Talk:Q6')
             link.parse()
             self.assertEqual(link.site, pywikibot.Site(sitetitle))
             self.assertEqual(link.title, 'Q6')
             self.assertEqual(link.namespace, 1)
Пример #23
0
    def test_namespace_lookalike(self):
        """Test that Link does only detect valid namespaces."""
        link = Link('CAT:', self.get_site())
        link.parse()
        self.assertEqual(link.site, self.get_site())
        self.assertEqual(link.title, 'CAT:')
        self.assertEqual(link.namespace, 0)

        link = Link('en:CAT:', self.get_site())
        link.parse()
        self.assertEqual(link.site, self.get_site())
        self.assertEqual(link.title, 'CAT:')
        self.assertEqual(link.namespace, 0)
Пример #24
0
    def test_namespace_lookalike(self):
        """Test that Link does only detect valid namespaces."""
        link = Link('CAT:', self.get_site())
        link.parse()
        self.assertEqual(link.site, self.get_site())
        self.assertEqual(link.title, 'CAT:')
        self.assertEqual(link.namespace, 0)

        link = Link('en:CAT:', self.get_site())
        link.parse()
        self.assertEqual(link.site, self.get_site())
        self.assertEqual(link.title, 'CAT:')
        self.assertEqual(link.namespace, 0)
Пример #25
0
    def test_namespace_vs_family(self):
        """Test namespace is selected before family."""
        config.mylang = 'en'
        config.family = 'wikipedia'
        link = Link(':wikipedia:en:Main Page')
        link.parse()
        self.assertEqual(link.title, 'En:Main Page')
        self.assertEqual(link.namespace, 4)

        link = Link(':wikipedia:en:Talk:Main Page')
        link.parse()
        self.assertEqual(link.site, self.get_site())
        self.assertEqual(link.title, 'En:Talk:Main Page')
        self.assertEqual(link.namespace, 4)
Пример #26
0
 def test_fully_qualified_NS1_family(self):
     """Test ':wikidata:testwiki:Talk:Q6' on enwp is namespace 1."""
     config.mylang = 'en'
     config.family = 'wikipedia'
     link = Link(':wikidata:testwiki:Talk:Q6')
     link.parse()
     if show_failures:
         self.assertEqual(link.site, self.get_site('test.wp'))
         self.assertEqual(link.title, 'Q6')
         self.assertEqual(link.namespace, 1)
     else:
         self.assertEqual(link.site, self.get_site('enwp'))
         self.assertEqual(link.title, 'Wikidata:testwiki:Talk:Q6')
         self.assertEqual(link.namespace, 0)
Пример #27
0
    def test_namespace_vs_family(self):
        """Test namespace is selected before family."""
        config.mylang = 'en'
        config.family = 'wikipedia'
        link = Link(':wikipedia:en:Main Page')
        link.parse()
        self.assertEqual(link.title, 'En:Main Page')
        self.assertEqual(link.namespace, 4)

        link = Link(':wikipedia:en:Talk:Main Page')
        link.parse()
        self.assertEqual(link.site, self.get_site())
        self.assertEqual(link.title, 'En:Talk:Main Page')
        self.assertEqual(link.namespace, 4)
Пример #28
0
 def test_fully_qualified_NS1_family(self):
     """Test 'wikidata:testwiki:Talk:Q6' on enwp is namespace 1."""
     config.mylang = 'en'
     config.family = 'wikipedia'
     link = Link('wikidata:testwiki:Talk:Q6')
     link.parse()
     if show_failures:
         self.assertEqual(link.site, pywikibot.Site('test', 'wikipedia'))
         self.assertEqual(link.title, 'Q6')
         self.assertEqual(link.namespace, 1)
     else:
         self.assertEqual(link.site, pywikibot.Site('en', 'wikipedia'))
         self.assertEqual(link.title, 'Wikidata:testwiki:Talk:Q6')
         self.assertEqual(link.namespace, 0)
Пример #29
0
 def test_fully_qualified_NS0_family(self):
     """Test 'wikidata:testwiki:Q6' on enwp is namespace 0."""
     config.mylang = 'en'
     config.family = 'wikipedia'
     link = Link('wikidata:testwiki:Q6')
     link.parse()
     if show_failures:
         self.assertEqual(link.site, pywikibot.Site('test', 'wikipedia'))
         self.assertEqual(link.title, 'Q6')
         self.assertEqual(link.namespace, 0)
     else:
         self.assertEqual(link.site, pywikibot.Site('en', 'wikipedia'))
         self.assertEqual(link.title, 'Wikidata:testwiki:Q6')
         self.assertEqual(link.namespace, 0)
Пример #30
0
 def test_fully_qualified_NS0_family(self):
     """Test ':wikidata:testwiki:Q6' on enwp is namespace 0."""
     config.mylang = 'en'
     config.family = 'wikipedia'
     link = Link(':wikidata:testwiki:Q6')
     link.parse()
     if show_failures:
         self.assertEqual(link.site, self.get_site('test.wp'))
         self.assertEqual(link.title, 'Q6')
         self.assertEqual(link.namespace, 0)
     else:
         self.assertEqual(link.site, self.get_site('enwp'))
         self.assertEqual(link.title, 'Wikidata:testwiki:Q6')
         self.assertEqual(link.namespace, 0)
Пример #31
0
 def test_fully_qualified_NS0_family(self):
     """Test 'wikipedia:en:Main Page' on wikidata is namespace 0."""
     config.mylang = 'wikidata'
     config.family = 'wikidata'
     link = Link('wikipedia:en:Main Page')
     if show_failures:
         link.parse()
         self.assertEqual(link.site, self.get_site('enwp'))
         self.assertEqual(link.namespace, 0)
         self.assertEqual(link.title, 'Main Page')
     else:
         self.assertRaisesRegex(
             pywikibot.NoSuchSite,
             'Language wikidata does not exist in family wikipedia',
             link.parse)  # very bad
Пример #32
0
 def test_fully_qualified_NS1_code(self):
     """Test 'testwiki:wikidata:Talk:Q6' on enwp is namespace 1."""
     config.mylang = 'en'
     config.family = 'wikipedia'
     link = Link('testwiki:wikidata:Talk:Q6')
     if show_failures:
         link.parse()
         self.assertEqual(link.site, pywikibot.Site('wikidata', 'wikidata'))
         self.assertEqual(link.title, 'Q6')
         self.assertEqual(link.namespace, 1)
     else:
         self.assertRaisesRegex(
             pywikibot.Error,
             'Family testwiki does not exist',
             link.parse)  # very bad
Пример #33
0
 def test_fully_qualified_NS1_code(self):
     """Test 'en:wikipedia:Talk:Main Page' on wikidata is not namespace 1."""
     config.mylang = 'wikidata'
     config.family = 'wikidata'
     link = Link('en:wikipedia:Talk:Main Page')
     link.parse()
     if show_failures:
         self.assertEqual(link.site, self.get_site('enwp'))
     else:
         self.assertEqual(link.site, self.get_site('wikidata'))
     if show_failures:
         self.assertEqual(link.title, 'Talk:Main Page')
         self.assertEqual(link.namespace, 4)
     else:
         self.assertEqual(link.title, 'En:wikipedia:Talk:Main Page')
         self.assertEqual(link.namespace, 0)
Пример #34
0
 def test_fully_qualified_NS1(self):
     """Test that fully qualified link is in namespace 1."""
     family, code = 'wikipedia:en'.split(':')
     for colon in ('', ':'):  # with or without preleading colon
         # switch code:family sequence en:wikipedia or wikipedia:en
         for first, second in [(family, code), (code, family)]:
             with self.subTest(colon=colon,
                               site='{}:{}'.format(first, second)):
                 link_title = self.PATTERN.format(colon=colon,
                                                  first=first,
                                                  second=second,
                                                  title='Talk:Main Page')
                 link = Link(link_title)
                 link.parse()
                 self.assertEqual(link.site, self.get_site('enwp'))
                 self.assertEqual(link.title, 'Main Page')
                 self.assertEqual(link.namespace, 1)
Пример #35
0
 def test_fully_qualified_NS1_code(self):
     """Test 'en:wikipedia:Main Page' on enws is namespace 1."""
     config.mylang = 'en'
     config.family = 'wikisource'
     link = Link('en:wikipedia:Talk:Main Page')
     if show_failures:
         link.parse()
     else:
         self.assertRaisesRegex(
             pywikibot.Error,
             "Improperly formatted interwiki link 'en:wikipedia:Talk:Main Page'",
             link.parse)
     if show_failures:
         self.assertEqual(link.site, self.get_site('enwp'))
     else:
         self.assertEqual(link.site, self.get_site('enws'))
     if show_failures:
         self.assertEqual(link.title, 'Main Page')
         self.assertEqual(link.namespace, 1)
     else:
         try:
             link.title
         except pywikibot.Error as e:
             self.assertEqual(str(e), "Improperly formatted interwiki link 'en:wikipedia:Talk:Main Page'")
Пример #36
0
 def test_no_text(self):
     """Test that Link doesn't allow empty."""
     link = Link('', self.get_site())
     with self.assertRaisesRegex(InvalidTitle,
                                 'The link does not contain a page title'):
         link.parse()
Пример #37
0
 def test_direct_non_local(self):
     link = Link('translatewiki:Main Page', self.get_site('wp'))
     link.parse()
     self.assertEqual(link.site, self.get_site('tw'))
     self.assertEqual(link.title, 'Main Page')
     self.assertEqual(link.namespace, 0)
Пример #38
0
 def test_interwiki_namespace_without_title(self):
     """Test that Link doesn't allow links without a title."""
     link = Link('en:Help:', self.get_site())
     with self.assertRaisesRegex(InvalidTitleError,
                                 "'en:Help:' has no title."):
         link.parse()
 def test_indirect_non_local(self):
     link = Link('en:translatewiki:Main Page', self.get_site('wp'))
     link.parse()
     self.assertEqual(link.site, self.get_site('tw'))
     self.assertEqual(link.title, 'Main Page')
     self.assertEqual(link.namespace, 0)