jenkins-bot merged this change.

View Change

Approvals: Dalba: Looks good to me, approved jenkins-bot: Verified
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(-)

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 change 421701. To unsubscribe, visit 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@gmail.com>
Gerrit-Reviewer: Dalba <dalba.wiki@gmail.com>
Gerrit-Reviewer: Dvorapa <dvorapa@seznam.cz>
Gerrit-Reviewer: Framawiki <framawiki@tools.wmflabs.org>
Gerrit-Reviewer: John Vandenberg <jayvdb@gmail.com>
Gerrit-Reviewer: Matěj Suchánek <matejsuchanek97@gmail.com>
Gerrit-Reviewer: Xqt <info@gno.de>
Gerrit-Reviewer: Zoranzoki21 <zorandori4444@gmail.com>
Gerrit-Reviewer: jenkins-bot <>