]> granicus.if.org Git - python/commitdiff
Move registration of the codec search function to the module scope
authorNeal Norwitz <nnorwitz@gmail.com>
Thu, 24 Nov 2005 22:00:56 +0000 (22:00 +0000)
committerNeal Norwitz <nnorwitz@gmail.com>
Thu, 24 Nov 2005 22:00:56 +0000 (22:00 +0000)
so it is only executed once.  Otherwise the same search function is
repeated added to the codec search path when regrtest is run with -R
and leaks are reported.

Lib/test/test_unicode.py

index d85f171dbb5b0870364b0792cffa45448a0082e8..e298a1433547c2a2b9f98ac6a1764733daa2fcbb 100644 (file)
@@ -9,6 +9,24 @@ Written by Marc-Andre Lemburg (mal@lemburg.com).
 import unittest, sys, string, codecs, new
 from test import test_support, string_tests
 
+# Error handling (bad decoder return)
+def search_function(encoding):
+    def decode1(input, errors="strict"):
+        return 42 # not a tuple
+    def encode1(input, errors="strict"):
+        return 42 # not a tuple
+    def encode2(input, errors="strict"):
+        return (42, 42) # no unicode
+    def decode2(input, errors="strict"):
+        return (42, 42) # no unicode
+    if encoding=="test.unicode1":
+        return (encode1, decode1, None, None)
+    elif encoding=="test.unicode2":
+        return (encode2, decode2, None, None)
+    else:
+        return None
+codecs.register(search_function)
+
 class UnicodeTest(
     string_tests.CommonTest,
     string_tests.MixinStrUnicodeUserStringTest,
@@ -567,23 +585,6 @@ class UnicodeTest(
         # Error handling (truncated escape sequence)
         self.assertRaises(UnicodeError, "\\".decode, "unicode-escape")
 
-        # Error handling (bad decoder return)
-        def search_function(encoding):
-            def decode1(input, errors="strict"):
-                return 42 # not a tuple
-            def encode1(input, errors="strict"):
-                return 42 # not a tuple
-            def encode2(input, errors="strict"):
-                return (42, 42) # no unicode
-            def decode2(input, errors="strict"):
-                return (42, 42) # no unicode
-            if encoding=="test.unicode1":
-                return (encode1, decode1, None, None)
-            elif encoding=="test.unicode2":
-                return (encode2, decode2, None, None)
-            else:
-                return None
-        codecs.register(search_function)
         self.assertRaises(TypeError, "hello".decode, "test.unicode1")
         self.assertRaises(TypeError, unicode, "hello", "test.unicode2")
         self.assertRaises(TypeError, u"hello".encode, "test.unicode1")