Kaydet (Commit) 83ff8a68 authored tarafından Victor Stinner's avatar Victor Stinner

test_bytes: new try to fix test on '%p' formatter on Windows

üst f9c9a3fe
...@@ -839,12 +839,22 @@ class BytesTest(BaseBytesTest, unittest.TestCase): ...@@ -839,12 +839,22 @@ class BytesTest(BaseBytesTest, unittest.TestCase):
b'i=-123') b'i=-123')
self.assertEqual(PyBytes_FromFormat(b'x=%x', c_int(0xabc)), self.assertEqual(PyBytes_FromFormat(b'x=%x', c_int(0xabc)),
b'x=abc') b'x=abc')
sizeof_ptr = ctypes.sizeof(c_char_p)
if os.name == 'nt':
# Windows (MSCRT)
ptr_format = '0x%0{}X'.format(2 * sizeof_ptr)
def ptr_formatter(ptr):
return (ptr_format % ptr)
else:
# UNIX (glibc)
def ptr_formatter(ptr):
return '%#x' % ptr
ptr = 0xabcdef ptr = 0xabcdef
expected = [b'ptr=%#x' % ptr] self.assertEqual(PyBytes_FromFormat(b'ptr=%p', c_char_p(ptr)),
win_format = 'ptr=0x%0{}X'.format(2 * ctypes.sizeof(c_char_p)) ('ptr=' + ptr_formatter(ptr)).encode('ascii'))
expected.append((win_format % ptr).encode('ascii'))
self.assertIn(PyBytes_FromFormat(b'ptr=%p', c_char_p(ptr)),
expected)
self.assertEqual(PyBytes_FromFormat(b's=%s', c_char_p(b'cstr')), self.assertEqual(PyBytes_FromFormat(b's=%s', c_char_p(b'cstr')),
b's=cstr') b's=cstr')
...@@ -859,7 +869,7 @@ class BytesTest(BaseBytesTest, unittest.TestCase): ...@@ -859,7 +869,7 @@ class BytesTest(BaseBytesTest, unittest.TestCase):
(b'%zd', c_ssize_t, _testcapi.PY_SSIZE_T_MIN, str), (b'%zd', c_ssize_t, _testcapi.PY_SSIZE_T_MIN, str),
(b'%zd', c_ssize_t, _testcapi.PY_SSIZE_T_MAX, str), (b'%zd', c_ssize_t, _testcapi.PY_SSIZE_T_MAX, str),
(b'%zu', c_size_t, size_max, str), (b'%zu', c_size_t, size_max, str),
(b'%p', c_char_p, size_max, lambda value: '%#x' % value), (b'%p', c_char_p, size_max, ptr_formatter),
): ):
self.assertEqual(PyBytes_FromFormat(formatstr, ctypes_type(value)), self.assertEqual(PyBytes_FromFormat(formatstr, ctypes_type(value)),
py_formatter(value).encode('ascii')), py_formatter(value).encode('ascii')),
......
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