]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Fix issue9301 - handle unquote({}) kind of case.
authorSenthil Kumaran <orsenthil@gmail.com>
Fri, 30 Jul 2010 19:34:36 +0000 (19:34 +0000)
committerSenthil Kumaran <orsenthil@gmail.com>
Fri, 30 Jul 2010 19:34:36 +0000 (19:34 +0000)
Lib/test/test_urllib.py
Lib/urllib/parse.py

index 44574c9c14585e4b9fdde4a6b502906d679820be..23492fb3bb72385473a482703dab076ee77ed4a2 100644 (file)
@@ -527,6 +527,7 @@ class QuotingTests(unittest.TestCase):
         self.assertEqual(expect, result,
                          "using quote_plus(): %r != %r" % (expect, result))
 
+
 class UnquotingTests(unittest.TestCase):
     """Tests for unquote() and unquote_plus()
 
@@ -555,6 +556,7 @@ class UnquotingTests(unittest.TestCase):
                          "using unquote(): not all characters escaped: "
                          "%s" % result)
         self.assertRaises(TypeError, urllib.parse.unquote, None)
+        self.assertRaises(TypeError, urllib.parse.unquote, ())
 
     def test_unquoting_badpercent(self):
         # Test unquoting on bad percent-escapes
@@ -589,8 +591,8 @@ class UnquotingTests(unittest.TestCase):
         result = urllib.parse.unquote_to_bytes(given)
         self.assertEqual(expect, result, "using unquote_to_bytes(): %r != %r"
                          % (expect, result))
-
         self.assertRaises(TypeError, urllib.parse.unquote_to_bytes, None)
+        self.assertRaises(TypeError, urllib.parse.unquote_to_bytes, ())
 
     def test_unquoting_mixed_case(self):
         # Test unquoting on mixed-case hex digits in the percent-escapes
index 691c004831a456e4222bd684f6142bfe88f412dc..a9fa26ad8f6b4f065ab4c16e94222a900357397e 100644 (file)
@@ -313,9 +313,7 @@ def unquote_to_bytes(string):
     """unquote_to_bytes('abc%20def') -> b'abc def'."""
     # Note: strings are encoded as UTF-8. This is only an issue if it contains
     # unescaped non-ASCII characters, which URIs should not.
-    if not string:
-        if string is None:
-            raise TypeError('None object is invalid for unquote_to_bytes()')
+    if string in (b'', ''):
         return b''
     if isinstance(string, str):
         string = string.encode('utf-8')
@@ -340,9 +338,7 @@ def unquote(string, encoding='utf-8', errors='replace'):
 
     unquote('abc%20def') -> 'abc def'.
     """
-    if not string:
-        if string is None:
-            raise TypeError('None object is invalid for unquote() function.')
+    if string in (b'', ''):
         return string
     res = string.split('%')
     if len(res) == 1: