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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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
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
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)
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)
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'")
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()
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)
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)