--- Lib/test/test_ctypes/test_generated_structs.py | 7 +++++++ 1 file changed, 7 insertions(+) --- a/Lib/test/test_ctypes/test_generated_structs.py +++ b/Lib/test/test_ctypes/test_generated_structs.py @@ -12,6 +12,7 @@ Run this module to regenerate the files: import unittest from test.support import import_helper import re +import sys from dataclasses import dataclass from functools import cached_property @@ -21,6 +22,11 @@ from ctypes import sizeof, alignment, po _ctypes_test = import_helper.import_module("_ctypes_test") +def is_32bit(): + # or alternatively (slightly slower) + # (struct.calcsize("P") * 8) == 32 + return not (sys.maxsize > 2**32) + # ctypes erases the difference between `c_int` and e.g.`c_int16`. # To keep it, we'll use custom subclasses with the C name stashed in `_c_name`: class c_bool(ctypes.c_bool): @@ -415,6 +421,7 @@ class AnonBitfields(Structure): class GeneratedTest(unittest.TestCase): + @unittest.skipIf(is_32bit(), 'fails on 32bit platform (gh#python/cpython#121938)') def test_generated_data(self): """Check that a ctypes struct/union matches its C equivalent.