jenkins-bot has submitted this change and it was merged.
Change subject: api.py: fix UnicodeError in url_encode()
......................................................................
api.py: fix UnicodeError in url_encode()
Bug: T121318
Change-Id: Ifa4ca0268b4d0d50a3148e709d652aff9216e7e8
---
M pywikibot/data/api.py
M tests/api_tests.py
2 files changed, 19 insertions(+), 2 deletions(-)
Approvals:
John Vandenberg: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/data/api.py b/pywikibot/data/api.py
index abeafdf..8723021 100644
--- a/pywikibot/data/api.py
+++ b/pywikibot/data/api.py
@@ -38,6 +38,7 @@
)
from pywikibot.tools import (
MediaWikiVersion, deprecated, itergroup, ip, PY2, getargspec,
+ UnicodeType
)
from pywikibot.tools.formatter import color_format
@@ -3046,7 +3047,12 @@
query = list(query.items())
if PY2:
- query = [(pair[0], pair[1].encode('utf-8')) for pair in query]
+ def _encode(x):
+ if isinstance(x, UnicodeType):
+ return x.encode('utf-8')
+ else:
+ return x
+ query = [(pair[0], _encode(pair[1])) for pair in query]
# parameters ending on 'token' should go last
# wpEditToken should go very last
diff --git a/tests/api_tests.py b/tests/api_tests.py
index 1cbb9de..1b0ee7d 100644
--- a/tests/api_tests.py
+++ b/tests/api_tests.py
@@ -975,7 +975,7 @@
class TestUrlEncoding(TestCase):
- """Test url_encode."""
+ """Test encode_url() function."""
net = False
@@ -1005,6 +1005,17 @@
self.assertEqual(result, expect)
self.assertIsInstance(result, str)
+ def test_url_encoding_from_basestring(self):
+ """Test encoding basestring values."""
+ if PY2:
+ query = {'token':
str('test\xe2\x80\x94test'.encode('utf-8'))}
+ else:
+ query = {'token': 'test\xe2\x80\x94test'}
+ expect = str('token=test%C3%A2%C2%80%C2%94test')
+ result = api.encode_url(query)
+ self.assertEqual(result, expect)
+ self.assertIsInstance(result, str)
+
def test_moving_special_tokens(self):
"""Test moving wpEditToken to the very end."""
query = {'wpEditToken': 'c', 'token': 'b',
'text': 'a'}
--
To view, visit
https://gerrit.wikimedia.org/r/258685
To unsubscribe, visit
https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Ifa4ca0268b4d0d50a3148e709d652aff9216e7e8
Gerrit-PatchSet: 5
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: Mpaa <mpaa.wiki(a)gmail.com>
Gerrit-Reviewer: John Vandenberg <jayvdb(a)gmail.com>
Gerrit-Reviewer: Ladsgroup <ladsgroup(a)gmail.com>
Gerrit-Reviewer: XZise <CommodoreFabianus(a)gmx.de>
Gerrit-Reviewer: jenkins-bot <>