Commit 00b2c86d authored by Antoine Pitrou's avatar Antoine Pitrou

Fix text failures when ctypes is not available

(followup to Victor's 85d11cf67aa8 and 7a50e549bd11)
parent 4637309e
import test.support, unittest import test.support, unittest
import sys, codecs, html.entities, unicodedata import sys, codecs, html.entities, unicodedata
import ctypes
SIZEOF_WCHAR_T = ctypes.sizeof(ctypes.c_wchar) try:
import ctypes
except ImportError:
ctypes = None
SIZEOF_WCHAR_T = -1
else:
SIZEOF_WCHAR_T = ctypes.sizeof(ctypes.c_wchar)
class PosReturn: class PosReturn:
# this can be used for configurable callbacks # this can be used for configurable callbacks
...@@ -572,33 +577,34 @@ class CodecCallbackTest(unittest.TestCase): ...@@ -572,33 +577,34 @@ class CodecCallbackTest(unittest.TestCase):
UnicodeEncodeError("ascii", "\uffff", 0, 1, "ouch")), UnicodeEncodeError("ascii", "\uffff", 0, 1, "ouch")),
("\\uffff", 1) ("\\uffff", 1)
) )
if ctypes.sizeof(ctypes.c_wchar) == 2: if SIZEOF_WCHAR_T == 2:
len_wide = 2 len_wide = 2
else: else:
len_wide = 1 len_wide = 1
self.assertEqual( if SIZEOF_WCHAR_T > 0:
codecs.backslashreplace_errors( self.assertEqual(
UnicodeEncodeError("ascii", "\U00010000", codecs.backslashreplace_errors(
0, len_wide, "ouch")), UnicodeEncodeError("ascii", "\U00010000",
("\\U00010000", len_wide) 0, len_wide, "ouch")),
) ("\\U00010000", len_wide)
self.assertEqual( )
codecs.backslashreplace_errors( self.assertEqual(
UnicodeEncodeError("ascii", "\U0010ffff", codecs.backslashreplace_errors(
0, len_wide, "ouch")), UnicodeEncodeError("ascii", "\U0010ffff",
("\\U0010ffff", len_wide) 0, len_wide, "ouch")),
) ("\\U0010ffff", len_wide)
# Lone surrogates (regardless of unicode width) )
self.assertEqual( # Lone surrogates (regardless of unicode width)
codecs.backslashreplace_errors( self.assertEqual(
UnicodeEncodeError("ascii", "\ud800", 0, 1, "ouch")), codecs.backslashreplace_errors(
("\\ud800", 1) UnicodeEncodeError("ascii", "\ud800", 0, 1, "ouch")),
) ("\\ud800", 1)
self.assertEqual( )
codecs.backslashreplace_errors( self.assertEqual(
UnicodeEncodeError("ascii", "\udfff", 0, 1, "ouch")), codecs.backslashreplace_errors(
("\\udfff", 1) UnicodeEncodeError("ascii", "\udfff", 0, 1, "ouch")),
) ("\\udfff", 1)
)
def test_badhandlerresults(self): def test_badhandlerresults(self):
results = ( 42, "foo", (1,2,3), ("foo", 1, 3), ("foo", None), ("foo",), ("foo", 1, 3), ("foo", None), ("foo",) ) results = ( 42, "foo", (1,2,3), ("foo", 1, 3), ("foo", None), ("foo",), ("foo", 1, 3), ("foo", None), ("foo",) )
......
...@@ -3,9 +3,14 @@ import unittest ...@@ -3,9 +3,14 @@ import unittest
import codecs import codecs
import locale import locale
import sys, _testcapi, io import sys, _testcapi, io
import ctypes
SIZEOF_WCHAR_T = ctypes.sizeof(ctypes.c_wchar) try:
import ctypes
except ImportError:
ctypes = None
SIZEOF_WCHAR_T = -1
else:
SIZEOF_WCHAR_T = ctypes.sizeof(ctypes.c_wchar)
class Queue(object): class Queue(object):
""" """
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment