mirror of
https://github.com/python/cpython.git
synced 2025-11-25 04:34:37 +00:00
Issue #13637: "a2b" functions in the binascii module now accept ASCII-only unicode strings.
This commit is contained in:
parent
8691bff6db
commit
0831676962
4 changed files with 85 additions and 11 deletions
|
|
@ -208,9 +208,9 @@ class BinASCIITest(unittest.TestCase):
|
|||
except Exception as err:
|
||||
self.fail("{}({!r}) raises {!r}".format(func, empty, err))
|
||||
|
||||
def test_unicode_strings(self):
|
||||
# Unicode strings are not accepted.
|
||||
for func in all_functions:
|
||||
def test_unicode_b2a(self):
|
||||
# Unicode strings are not accepted by b2a_* functions.
|
||||
for func in set(all_functions) - set(a2b_functions) | {'rledecode_hqx'}:
|
||||
try:
|
||||
self.assertRaises(TypeError, getattr(binascii, func), "test")
|
||||
except Exception as err:
|
||||
|
|
@ -218,6 +218,34 @@ class BinASCIITest(unittest.TestCase):
|
|||
# crc_hqx needs 2 arguments
|
||||
self.assertRaises(TypeError, binascii.crc_hqx, "test", 0)
|
||||
|
||||
def test_unicode_a2b(self):
|
||||
# Unicode strings are accepted by a2b_* functions.
|
||||
MAX_ALL = 45
|
||||
raw = self.rawdata[:MAX_ALL]
|
||||
for fa, fb in zip(a2b_functions, b2a_functions):
|
||||
if fa == 'rledecode_hqx':
|
||||
# Takes non-ASCII data
|
||||
continue
|
||||
a2b = getattr(binascii, fa)
|
||||
b2a = getattr(binascii, fb)
|
||||
try:
|
||||
a = b2a(self.type2test(raw))
|
||||
binary_res = a2b(a)
|
||||
a = a.decode('ascii')
|
||||
res = a2b(a)
|
||||
except Exception as err:
|
||||
self.fail("{}/{} conversion raises {!r}".format(fb, fa, err))
|
||||
if fb == 'b2a_hqx':
|
||||
# b2a_hqx returns a tuple
|
||||
res, _ = res
|
||||
binary_res, _ = binary_res
|
||||
self.assertEqual(res, raw, "{}/{} conversion: "
|
||||
"{!r} != {!r}".format(fb, fa, res, raw))
|
||||
self.assertEqual(res, binary_res)
|
||||
self.assertIsInstance(res, bytes)
|
||||
# non-ASCII string
|
||||
self.assertRaises(ValueError, a2b, "\x80")
|
||||
|
||||
|
||||
class ArrayBinASCIITest(BinASCIITest):
|
||||
def type2test(self, s):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue