[Python-checkins] cpython: Avoid triggering the refleak detector
nick.coghlan
python-checkins at python.org
Fri Nov 15 15:35:44 CET 2013
http://hg.python.org/cpython/rev/8c4d42c0dc8e
changeset: 87111:8c4d42c0dc8e
user: Nick Coghlan <ncoghlan at gmail.com>
date: Sat Nov 16 00:35:34 2013 +1000
summary:
Avoid triggering the refleak detector
files:
Lib/test/test_codecs.py | 22 ++++++++++++++--------
1 files changed, 14 insertions(+), 8 deletions(-)
diff --git a/Lib/test/test_codecs.py b/Lib/test/test_codecs.py
--- a/Lib/test/test_codecs.py
+++ b/Lib/test/test_codecs.py
@@ -2386,6 +2386,15 @@
# currently *only* want this to happen for relatively stateless
# exceptions, where the only significant information they contain is their
# type and a single str argument.
+
+# Use a local codec registry to avoid appearing to leak objects when
+# registering multiple seach functions
+_TEST_CODECS = {}
+
+def _get_test_codec(codec_name):
+ return _TEST_CODECS.get(codec_name)
+codecs.register(_get_test_codec) # Returns None, not usable as a decorator
+
class ExceptionChainingTest(unittest.TestCase):
def setUp(self):
@@ -2395,19 +2404,16 @@
# The codecs module normalizes codec names, although this doesn't
# appear to be formally documented...
self.codec_name = repr(self).lower().replace(" ", "-")
- self.codec_info = None
- codecs.register(self.get_codec)
- def get_codec(self, codec_name):
- if codec_name != self.codec_name:
- return None
- return self.codec_info
+ def tearDown(self):
+ _TEST_CODECS.pop(self.codec_name, None)
def set_codec(self, obj_to_raise):
def raise_obj(*args, **kwds):
raise obj_to_raise
- self.codec_info = codecs.CodecInfo(raise_obj, raise_obj,
- name=self.codec_name)
+ codec_info = codecs.CodecInfo(raise_obj, raise_obj,
+ name=self.codec_name)
+ _TEST_CODECS[self.codec_name] = codec_info
@contextlib.contextmanager
def assertWrapped(self, operation, exc_type, msg):
--
Repository URL: http://hg.python.org/cpython
More information about the Python-checkins
mailing list