summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin v. Löwis <martin@v.loewis.de>2006-03-27 21:38:32 (GMT)
committerMartin v. Löwis <martin@v.loewis.de>2006-03-27 21:38:32 (GMT)
commit97334aebefc6d2d0bbeeb38051c1366d70d5abef (patch)
treedc9d9596584da633d3847e0c39461b6e19cce738
parentc47bfb0874a2184fc156861a659ea426967ebc19 (diff)
downloadcpython-97334aebefc6d2d0bbeeb38051c1366d70d5abef.zip
cpython-97334aebefc6d2d0bbeeb38051c1366d70d5abef.tar.gz
cpython-97334aebefc6d2d0bbeeb38051c1366d70d5abef.tar.bz2
Backport of r41530 (neal.norwitz, 2005-11-24):
Move registration of the codec search function to the module scope 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.
-rw-r--r--Lib/test/test_unicode.py35
1 files changed, 18 insertions, 17 deletions
diff --git a/Lib/test/test_unicode.py b/Lib/test/test_unicode.py
index 7f8cf50..7f6a152 100644
--- a/Lib/test/test_unicode.py
+++ b/Lib/test/test_unicode.py
@@ -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,
@@ -578,23 +596,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")