]> granicus.if.org Git - python/commitdiff
Fix test_bytes on Windows
authorVictor Stinner <victor.stinner@gmail.com>
Wed, 14 Oct 2015 00:55:12 +0000 (02:55 +0200)
committerVictor Stinner <victor.stinner@gmail.com>
Wed, 14 Oct 2015 00:55:12 +0000 (02:55 +0200)
On Windows, sprintf("%p", 0xabcdef) formats hexadecimal in uppercase and pad to
16 characters (on 64-bit system) with zeros.

Lib/test/test_bytes.py

index 5fe193e198ec0860504bc81650ed3103f150d0ba..947d959e84e61eda0959f8d5da8b5e914c79db20 100644 (file)
@@ -782,7 +782,7 @@ class BytesTest(BaseBytesTest, unittest.TestCase):
 
     # Test PyBytes_FromFormat()
     def test_from_format(self):
-        test.support.import_module('ctypes')
+        ctypes = test.support.import_module('ctypes')
         _testcapi = test.support.import_module('_testcapi')
         from ctypes import pythonapi, py_object
         from ctypes import (
@@ -825,9 +825,12 @@ class BytesTest(BaseBytesTest, unittest.TestCase):
                          b'i=-123')
         self.assertEqual(PyBytes_FromFormat(b'x=%x', c_int(0xabc)),
                          b'x=abc')
-        self.assertEqual(PyBytes_FromFormat(b'ptr=%p',
-                                            c_char_p(0xabcdef)),
-                         b'ptr=0xabcdef')
+        ptr = 0xabcdef
+        expected = [b'ptr=%#x' % ptr]
+        win_format = 'ptr=0x%0{}X'.format(2 * ctypes.sizeof(c_char_p))
+        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')),
                          b's=cstr')