jenkins-bot has submitted this change and it was merged. (
https://gerrit.wikimedia.org/r/443957 )
Change subject: pagegenerators: try..except UnicodeEncodeError on getattr()
......................................................................
pagegenerators: try..except UnicodeEncodeError on getattr()
Python 2 getattr() will do implicit convertion from unicode to str,
and when the unicode is non-ascii it'll choke. Since we don't really
have a reason to use non-ascii methods, I'm just doing try..except
instead if detecting if it's Python 2 and conditionally stringify.
Bug: T198849
Change-Id: Ica4ea5a34f5f44327a8a1bbbdb3077d7401ce385
---
M pywikibot/pagegenerators.py
M tests/pagegenerators_tests.py
2 files changed, 13 insertions(+), 1 deletion(-)
Approvals:
Dalba: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/pagegenerators.py b/pywikibot/pagegenerators.py
index ec06f31..893bc15 100644
--- a/pywikibot/pagegenerators.py
+++ b/pywikibot/pagegenerators.py
@@ -1176,7 +1176,11 @@
if value == '':
value = None
- handler = getattr(self, '_handle_' + arg[1:], None)
+ try:
+ handler = getattr(self, '_handle_' + arg[1:], None)
+ except UnicodeEncodeError:
+ # getattr() on py2 does implicit unicode -> str
+ return False
if handler:
handler_result = handler(value)
if isinstance(handler_result, bool):
diff --git a/tests/pagegenerators_tests.py b/tests/pagegenerators_tests.py
index 927a8a3..8bcf3f7 100755
--- a/tests/pagegenerators_tests.py
+++ b/tests/pagegenerators_tests.py
@@ -721,6 +721,14 @@
gf.handleArg('-ns:not:User')
self.assertEqual(gf.namespaces, {1, 3, 4, 5})
+ def test_invalid_arg(self):
+ """Test invalid / non-generator arguments."""
+ gf = pagegenerators.GeneratorFactory(site=self.get_site())
+ self.assertFalse(gf.handleArg('-foobar'))
+ self.assertFalse(gf.handleArg('barbaz'))
+ self.assertFalse(gf.handleArg('-ì'))
+ self.assertFalse(gf.handleArg('ì'))
+
class TestItemClaimFilterPageGenerator(WikidataTestCase):
--
To view, visit
https://gerrit.wikimedia.org/r/443957
To unsubscribe, or for help writing mail filters, visit
https://gerrit.wikimedia.org/r/settings
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: Ica4ea5a34f5f44327a8a1bbbdb3077d7401ce385
Gerrit-Change-Number: 443957
Gerrit-PatchSet: 5
Gerrit-Owner: Zhuyifei1999 <zhuyifei1999(a)gmail.com>
Gerrit-Reviewer: Dalba <dalba.wiki(a)gmail.com>
Gerrit-Reviewer: John Vandenberg <jayvdb(a)gmail.com>
Gerrit-Reviewer: Multichill <maarten(a)mdammers.nl>
Gerrit-Reviewer: Siebrand <siebrand(a)kitano.nl>
Gerrit-Reviewer: Zhuyifei1999 <zhuyifei1999(a)gmail.com>
Gerrit-Reviewer: Zoranzoki21 <zorandori4444(a)gmail.com>
Gerrit-Reviewer: jenkins-bot