From faf4149f72575a826f65f7e0747254088195ef9b Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Tue, 26 May 2009 18:31:11 +0000 Subject: #6118: dont ignore encoding arguments for arguments with spaces in quote_plus(). --- Lib/test/test_urllib.py | 15 +++++++++++++++ Lib/urllib/parse.py | 2 +- Misc/NEWS | 3 +++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/Lib/test/test_urllib.py b/Lib/test/test_urllib.py index da6bc2d..ba742af 100644 --- a/Lib/test/test_urllib.py +++ b/Lib/test/test_urllib.py @@ -510,6 +510,21 @@ class QuotingTests(unittest.TestCase): self.assertEqual(expect, result, "using quote(): %r != %r" % (expect, result)) + def test_quote_plus_with_unicode(self): + # Encoding (latin-1) test for quote_plus + given = "\xa2\xd8 \xff" + expect = "%A2%D8+%FF" + result = urllib.parse.quote_plus(given, encoding="latin-1") + self.assertEqual(expect, result, + "using quote_plus(): %r != %r" % (expect, result)) + # Errors test for quote_plus + given = "ab\u6f22\u5b57 cd" + expect = "ab%3F%3F+cd" + result = urllib.parse.quote_plus(given, encoding="latin-1", + errors="replace") + self.assertEqual(expect, result, + "using quote_plus(): %r != %r" % (expect, result)) + class UnquotingTests(unittest.TestCase): """Tests for unquote() and unquote_plus() diff --git a/Lib/urllib/parse.py b/Lib/urllib/parse.py index 9033683..726e85f 100644 --- a/Lib/urllib/parse.py +++ b/Lib/urllib/parse.py @@ -488,7 +488,7 @@ def quote_plus(string, safe='', encoding=None, errors=None): space = ' ' else: space = b' ' - string = quote(string, safe + space) + string = quote(string, safe + space, encoding, errors) return string.replace(' ', '+') def quote_from_bytes(bs, safe='/'): diff --git a/Misc/NEWS b/Misc/NEWS index 91b5dfc..e8e2e55 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -34,6 +34,9 @@ Core and Builtins Library ------- +- Issue #6118: urllib.parse.quote_plus ignored the encoding and errors + arguments for strings with a space in them. + - In unittest, using a skipping decorator on a class is now equivalent to skipping every test on the class. The ClassTestSuite class has been removed. -- cgit v0.12