Skip to content

Commit 62666f4

Browse files
committed
Test more
1 parent cc45fde commit 62666f4

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

mypyc/test-data/run-base64.test

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,9 @@ def check_decode(b: bytes, encoded: bool = False) -> None:
6161
else:
6262
enc = b64encode(b)
6363
assert b64decode(enc) == getattr(base64, "b64decode")(enc)
64-
enc_str = enc.decode("ascii")
65-
assert b64decode(enc_str) == getattr(base64, "b64decode")(enc_str)
64+
if getattr(enc, "isascii")(): # Test stub has no "isascii"
65+
enc_str = enc.decode("ascii")
66+
assert b64decode(enc_str) == getattr(base64, "b64decode")(enc_str)
6667

6768
def test_decode_different_strings() -> None:
6869
for i in range(256):
@@ -83,6 +84,10 @@ def test_decode_different_strings() -> None:
8384
for b in b"", b"ab", b"bac", b"1234", b"xyz88", b"abc" * 200:
8485
check_decode(b)
8586

87+
def is_base64_char(x: int) -> bool:
88+
c = chr(x)
89+
return ('a' <= c <= 'z') or ('A' <= c <= 'Z') or ('0' <= c <= '9') or c in '+/='
90+
8691
def test_decode_with_non_base64_chars() -> None:
8792
# For stdlib compatibility, non-base64 characters should be ignored.
8893

@@ -98,6 +103,14 @@ def test_decode_with_non_base64_chars() -> None:
98103
check_decode(b"eAa=", encoded=True)
99104
check_decode(b"eAY=", encoded=True)
100105

106+
for x in range(256):
107+
if not is_base64_char(x):
108+
b = bytes([x])
109+
check_decode(b, encoded=True)
110+
check_decode(b"eA==" + b, encoded=True)
111+
check_decode(b"e" + b + b"A==", encoded=True)
112+
check_decode(b"eA=" + b + b"=", encoded=True)
113+
101114
def check_decode_error(b: bytes, ignore_stdlib: bool = False) -> None:
102115
if not ignore_stdlib:
103116
with assertRaises(binascii.Error):

0 commit comments

Comments
 (0)