mirror of
https://github.com/python/cpython.git
synced 2025-09-19 15:10:58 +00:00
Fix text failures when ctypes is not available
(followup to Victor's 85d11cf67aa8 and 7a50e549bd11)
This commit is contained in:
parent
4637309ee6
commit
00b2c86d09
2 changed files with 39 additions and 28 deletions
|
@ -1,8 +1,13 @@
|
||||||
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):
|
||||||
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
|
||||||
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):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue