Skip to content

Commit 3875a62

Browse files
Always fail on unsupported codec error handling (#24)
1 parent 9bbacda commit 3875a62

File tree

2 files changed

+13
-4
lines changed

2 files changed

+13
-4
lines changed

iconvcodec.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,6 @@ def _iconv_encode_impl(encoder, msg, errors, bufsize=None):
3939
out1, len1 = _iconv_encode_impl(
4040
encoder, msg[inlen:].decode()[1:].encode(), errors
4141
)
42-
else:
43-
raise ValueError("unsupported error handling")
4442
return outres + out1, inlen + len1 + 1
4543
raise
4644

@@ -74,8 +72,6 @@ def _iconv_decode_impl(decoder, msg, errors, bufsize=None):
7472
out1, len1 = _iconv_decode_impl(decoder, msg[inlen + 1 :], errors)
7573
elif errors == "ignore":
7674
out1, len1 = _iconv_decode_impl(decoder, msg[inlen + 1 :], errors)
77-
else:
78-
raise ValueError("unsupported error handling")
7975
return outres.decode() + out1, inlen + len1 + 1
8076

8177

@@ -93,9 +89,15 @@ def codec_factory(encoding):
9389
def encode(inp, errors="strict"):
9490
msg = inp.encode()
9591

92+
if errors not in ("strict", "replace", "ignore"):
93+
raise ValueError("unsupported error handling")
94+
9695
return _iconv_encode_impl(encoder, msg, errors)
9796

9897
def decode(msg, errors="strict"):
98+
if errors not in ("strict", "replace", "ignore"):
99+
raise ValueError("unsupported error handling")
100+
99101
return _iconv_decode_impl(decoder, msg, errors)
100102

101103
return encode, decode

test_iconvcodec.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,3 +45,10 @@ def test_incremental_decode(self):
4545

4646
self.assertEqual(first, "")
4747
self.assertEqual(second, "\u0141")
48+
49+
def test_invalid_errors(self):
50+
with self.assertRaisesRegex(ValueError, "unsupported error handling"):
51+
"™".encode("ASCII//TRANSLIT", "WRONG")
52+
53+
with self.assertRaisesRegex(ValueError, "unsupported error handling"):
54+
b"a".decode("ASCII//TRANSLIT", "WRONG")

0 commit comments

Comments
 (0)