diff -r e8447da8791d Lib/test/test_codecs.py --- a/Lib/test/test_codecs.py Sat Sep 06 20:38:23 2014 +1000 +++ b/Lib/test/test_codecs.py Sat Sep 06 22:40:48 2014 +1000 @@ -2602,7 +2602,14 @@ self.obj_to_raise = RuntimeError def tearDown(self): - _TEST_CODECS.pop(self.codec_name, None) + entry = _TEST_CODECS.pop(self.codec_name, None) + encodings._cache.pop(self.codec_name, None) + if entry is not None: + # Issue #22166: Also need to clear the internal cache in CPython + import gc + for ref in gc.get_referrers(entry): + if isinstance(ref, dict): + ref.pop(self.codec_name, None) def set_codec(self, encode, decode): codec_info = codecs.CodecInfo(encode, decode,