jenkins-bot has submitted this change and it was merged. (
https://gerrit.wikimedia.org/r/421701 )
Change subject: Make sure interwiki title is parsed in textlib.getLanguageLinks
......................................................................
Make sure interwiki title is parsed in textlib.getLanguageLinks
The try-except block was redundant because InvalidTitle is raised
when the title is parsed, not just constructed.
Change-Id: I34b0265acae52ad5bb9e5e38cf2f84d92bb2bdf5
---
M pywikibot/textlib.py
M tests/textlib_tests.py
2 files changed, 15 insertions(+), 9 deletions(-)
Approvals:
Dalba: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/textlib.py b/pywikibot/textlib.py
index 2be1ea8..7a40a55 100644
--- a/pywikibot/textlib.py
+++ b/pywikibot/textlib.py
@@ -861,17 +861,18 @@
# skip language links to its own site
if site == insite:
continue
+ previous_key_count = len(result)
+ page = pywikibot.Page(site, pagetitle)
try:
- previous_key_count = len(result)
- result[site] = pywikibot.Page(site, pagetitle)
- if previous_key_count == len(result):
- pywikibot.warning('[getLanguageLinks] 2 or more interwiki '
- 'links point to site %s.' % site)
+ result[page.site] = page # need to trigger page._link.parse()
except InvalidTitle:
- pywikibot.output(u'[getLanguageLinks] Text contains invalid '
- u'interwiki link [[%s:%s]].'
+ pywikibot.output('[getLanguageLinks] Text contains invalid '
+ 'interwiki link [[%s:%s]].'
% (lang, pagetitle))
continue
+ if previous_key_count == len(result):
+ pywikibot.warning('[getLanguageLinks] 2 or more interwiki '
+ 'links point to site %s.' % site)
return result
diff --git a/tests/textlib_tests.py b/tests/textlib_tests.py
index 45e09ef..ca49ada 100644
--- a/tests/textlib_tests.py
+++ b/tests/textlib_tests.py
@@ -1472,7 +1472,8 @@
},
}
- example_text = '[[en:Site]] [[de:Site|Piped]] [[commons:Site]]
[[baden:Site]]'
+ example_text = ('[[en:Site]] [[de:Site|Piped]] [[commons:Site]] '
+ '[[baden:Site]] [[fr:{{PAGENAME}}]]')
@classmethod
def setUpClass(cls):
@@ -1482,7 +1483,11 @@
def test_getLanguageLinks(self, key):
"""Test if the function returns the correct titles and
sites."""
- lang_links = textlib.getLanguageLinks(self.example_text, self.site)
+ with mock.patch('pywikibot.output') as m:
+ lang_links = textlib.getLanguageLinks(self.example_text, self.site)
+ m.assert_called_once_with(
+ '[getLanguageLinks] Text contains invalid interwiki link '
+ '[[fr:{{PAGENAME}}]].')
self.assertEqual(set(page.title() for page in lang_links.values()),
set(['Site']))
self.assertEqual(set(lang_links), self.sites_set - set([self.site]))
--
To view, visit
https://gerrit.wikimedia.org/r/421701
To unsubscribe, visit
https://gerrit.wikimedia.org/r/settings
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: I34b0265acae52ad5bb9e5e38cf2f84d92bb2bdf5
Gerrit-Change-Number: 421701
Gerrit-PatchSet: 3
Gerrit-Owner: Matěj Suchánek <matejsuchanek97(a)gmail.com>
Gerrit-Reviewer: Dalba <dalba.wiki(a)gmail.com>
Gerrit-Reviewer: Dvorapa <dvorapa(a)seznam.cz>
Gerrit-Reviewer: Framawiki <framawiki(a)tools.wmflabs.org>
Gerrit-Reviewer: John Vandenberg <jayvdb(a)gmail.com>
Gerrit-Reviewer: Matěj Suchánek <matejsuchanek97(a)gmail.com>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: Zoranzoki21 <zorandori4444(a)gmail.com>
Gerrit-Reviewer: jenkins-bot <>