jenkins-bot has submitted this change and it was merged.
Change subject: Bug 54745: Link.langlinkUnsafe interwiki_forward ......................................................................
Bug 54745: Link.langlinkUnsafe interwiki_forward
- Site.pagelanglinks (and others) use Link.langlinkUnsafe, which didnt respect Family.interwiki_forward. This caused interwiki links on Commons to link to Commons pages.
Change-Id: Ia30b7b7dd2b4349a72e0594f135695848cf61bdb --- M pywikibot/page.py M tests/site_tests.py 2 files changed, 19 insertions(+), 1 deletion(-)
Approvals: Ricordisamoa: Looks good to me, approved jenkins-bot: Verified
diff --git a/pywikibot/page.py b/pywikibot/page.py index cd53b78..1f1877b 100644 --- a/pywikibot/page.py +++ b/pywikibot/page.py @@ -3477,7 +3477,10 @@ Assumes that the lang & title come clean, no checks are made. """ link = Link.__new__(Link) - link._site = pywikibot.Site(lang, source.family.name) + if source.family.interwiki_forward: + link._site = pywikibot.Site(lang, source.family.interwiki_forward) + else: + link._site = pywikibot.Site(lang, source.family.name) link._section = None link._source = source
diff --git a/tests/site_tests.py b/tests/site_tests.py index 644b782..cbce977 100644 --- a/tests/site_tests.py +++ b/tests/site_tests.py @@ -1117,6 +1117,21 @@ # TODO test other optional arguments
+class TestCommonsSite(PywikibotTestCase): + """Test cases for Site methods on Commons.""" + family = "commons" + code = "commons" + + def testInterWikiForward(self): + self.site = pywikibot.Site(self.code, self.family) + self.mainpage = pywikibot.Page(pywikibot.Link("Main Page", self.site)) + # test pagelanglinks on commons, + # which forwards interwikis to wikipedia + ll = next(self.site.pagelanglinks(self.mainpage)) + self.assertType(ll, pywikibot.Link) + self.assertEquals(ll.site.family.name, 'wikipedia') + + if __name__ == '__main__': try: unittest.main()
pywikibot-commits@lists.wikimedia.org