Skip to content

Commit 1fc7ce2

Browse files
test(email.charset): verify viscii is not registered and all charsets have codecs
1 parent 0afed0b commit 1fc7ce2

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

Lib/test/test_email/test_email.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5008,6 +5008,29 @@ def test_unicode_charset_name(self):
50085008
self.assertEqual(str(charset), 'us-ascii')
50095009
self.assertRaises(errors.CharsetError, Charset, 'asc\xffii')
50105010

5011+
def test_viscii_not_registered(self):
5012+
# viscii has no Python codec, so it should not be in CHARSETS.
5013+
from email.charset import CHARSETS
5014+
self.assertNotIn('viscii', CHARSETS)
5015+
5016+
def test_all_charsets_have_codecs(self):
5017+
# Every charset registered in CHARSETS should have a resolvable
5018+
# Python codec (via CODEC_MAP or by name).
5019+
import codecs
5020+
from email.charset import CHARSETS, CODEC_MAP
5021+
for name in CHARSETS:
5022+
codec_name = CODEC_MAP.get(name, name)
5023+
if codec_name is None:
5024+
continue
5025+
with self.subTest(charset=name, codec=codec_name):
5026+
try:
5027+
codecs.lookup(codec_name)
5028+
except LookupError:
5029+
self.fail(
5030+
f"charset {name!r} maps to codec {codec_name!r} "
5031+
f"which is not available"
5032+
)
5033+
50115034

50125035

50135036
# Test multilingual MIME headers.

0 commit comments

Comments
 (0)