@@ -41,15 +41,16 @@ def test_encode_different_strings() -> None:
4141 for b in rand_values:
4242 check_encode(b)
4343
44- def test_encode_wrapper() -> None:
45- enc: Any = b64encode
46- assert enc(b"x") == b"eA=="
44+ def test_encode_wrappers() -> None:
45+ funcs: list[Any] = [b64encode, urlsafe_b64encode]
46+ for enc in funcs:
47+ assert enc(b"x") == b"eA=="
4748
48- with assertRaises(TypeError):
49- enc()
49+ with assertRaises(TypeError):
50+ enc()
5051
51- with assertRaises(TypeError):
52- enc(b"x", b"y")
52+ with assertRaises(TypeError):
53+ enc(b"x", b"y")
5354
5455def test_decode_basic() -> None:
5556 assert b64decode(b"eA==") == b"x"
@@ -149,15 +150,16 @@ def test_decode_with_extra_data_after_padding() -> None:
149150 check_decode(b"eHk=x", encoded=True)
150151 check_decode(b"eA==abc=======efg", encoded=True)
151152
152- def test_decode_wrapper() -> None:
153- dec: Any = b64decode
154- assert dec(b"eA==") == b"x"
153+ def test_decode_wrappers() -> None:
154+ funcs: list[Any] = [b64decode, urlsafe_b64decode]
155+ for dec in funcs:
156+ assert dec(b"eA==") == b"x"
155157
156- with assertRaises(TypeError):
157- dec()
158+ with assertRaises(TypeError):
159+ dec()
158160
159- with assertRaises(TypeError):
160- dec(b"x", b"y")
161+ with assertRaises(TypeError):
162+ dec(b"x", b"y")
161163
162164def check_urlsafe_encode(b: bytes) -> None:
163165 assert urlsafe_b64encode(b) == getattr(base64, "urlsafe_b64encode")(b)
@@ -182,6 +184,7 @@ def check_urlsafe_decode(b: bytes) -> None:
182184 assert urlsafe_b64decode(enc2) == getattr(base64, "urlsafe_b64decode")(enc2)
183185
184186def test_urlsafe_b64decode() -> None:
187+ # Don't test everything, since the implementation is mostly shared with b64decode.
185188 check_urlsafe_decode(b"")
186189 check_urlsafe_decode(b"a")
187190 check_urlsafe_decode(b"\xf8")
@@ -194,6 +197,13 @@ def test_urlsafe_b64decode() -> None:
194197 for b in rand_values:
195198 check_urlsafe_decode(b)
196199
200+ assert urlsafe_b64decode(b" e A = == !") == b"x"
201+
202+ def test_urlsafe_b64decode_errors() -> None:
203+ for b in b"eA", b"eA=", b"eHk":
204+ with assertRaises(ValueError):
205+ b64decode(b)
206+
197207[case testBase64FeaturesNotAvailableInNonExperimentalBuild_librt_base64]
198208# This also ensures librt.base64 can be built without experimental features
199209import librt.base64
0 commit comments