Skip to content

Commit ceb71ce

Browse files
committed
Fix padding tests on 32bit architectures
1 parent 165d12d commit ceb71ce

File tree

4 files changed

+58
-22
lines changed

4 files changed

+58
-22
lines changed

changelog.txt

+8
Original file line numberDiff line numberDiff line change
@@ -143,3 +143,11 @@
143143
### Added
144144

145145
- Make CStruct/MemCStruct Pickle Friendly
146+
147+
### 3.2
148+
149+
2022-10-23
150+
151+
### Fix
152+
153+
- Fix padding tests on 32bit architectures

cstruct/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424

2525
__author__ = 'Andrea Bonomi <[email protected]>'
2626
__license__ = 'MIT'
27-
__version__ = '3.1'
27+
__version__ = '3.2'
2828
__date__ = '15 August 2013'
2929

3030
import struct

setup.py

-3
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,6 @@ def readme():
1717
'Operating System :: OS Independent',
1818
'Programming Language :: Python',
1919
'Topic :: Software Development :: Libraries :: Python Modules',
20-
'Programming Language :: Python :: 3.3',
21-
'Programming Language :: Python :: 3.4',
22-
'Programming Language :: Python :: 3.5',
2320
'Programming Language :: Python :: 3.6',
2421
'Programming Language :: Python :: 3.7',
2522
'Programming Language :: Python :: 3.8',

tests/test_alignment.py

+49-18
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,11 @@
2525
#
2626
# *****************************************************************************
2727

28+
import sys
2829
from cstruct import sizeof, typedef, define, CStruct, NATIVE_ORDER
2930

31+
IS_64BITS = sys.maxsize > 2**32
32+
3033
define("UT_NAMESIZE", 32)
3134
define("UT_LINESIZE", 32)
3235
define("UT_HOSTSIZE", 256)
@@ -196,21 +199,36 @@ def test_utmp_sizeof():
196199

197200

198201
def test_foo1_sizeof():
199-
assert Foo1.__fields_types__['p'].padding == 0
200-
assert Foo1.__fields_types__['c'].padding == 0
201-
assert Foo1.__fields_types__['x'].padding == 7
202-
assert sizeof("struct Foo1") == 24
203-
assert Foo1().size == 24
202+
if IS_64BITS:
203+
assert Foo1.__fields_types__['p'].padding == 0
204+
assert Foo1.__fields_types__['c'].padding == 0
205+
assert Foo1.__fields_types__['x'].padding == 7
206+
assert sizeof("struct Foo1") == 24
207+
assert Foo1().size == 24
208+
else:
209+
assert Foo1.__fields_types__['p'].padding == 0
210+
assert Foo1.__fields_types__['c'].padding == 0
211+
assert Foo1.__fields_types__['x'].padding == 3
212+
assert sizeof("struct Foo1") == 12
213+
assert Foo1().size == 12
204214

205215

206216
def test_foo2_sizeof():
207-
assert sizeof("struct Foo2") == 24
208-
assert Foo2().size == 24
217+
if IS_64BITS:
218+
assert sizeof("struct Foo2") == 24
219+
assert Foo2().size == 24
220+
else:
221+
assert sizeof("struct Foo2") == 16
222+
assert Foo2().size == 16
209223

210224

211225
def test_foo3_sizeof():
212-
assert sizeof("struct Foo3") == 16
213-
assert Foo3().size == 16
226+
if IS_64BITS:
227+
assert sizeof("struct Foo3") == 16
228+
assert Foo3().size == 16
229+
else:
230+
assert sizeof("struct Foo3") == 8
231+
assert Foo3().size == 8
214232

215233

216234
def test_foo4_sizeof():
@@ -219,15 +237,28 @@ def test_foo4_sizeof():
219237

220238

221239
def test_foo5_sizeof():
222-
assert Foo5.__fields_types__['c'].padding == 0
223-
assert Foo5.__fields_types__['inner'].padding == 7
224-
assert sizeof("struct Foo5") == 24
225-
assert Foo5().size == 24
240+
if IS_64BITS:
241+
assert Foo5.__fields_types__['c'].padding == 0
242+
assert Foo5.__fields_types__['inner'].padding == 7
243+
assert sizeof("struct Foo5") == 24
244+
assert Foo5().size == 24
245+
else:
246+
assert Foo5.__fields_types__['c'].padding == 0
247+
assert Foo5.__fields_types__['inner'].padding == 3
248+
assert sizeof("struct Foo5") == 12
249+
assert Foo5().size == 12
226250

227251

228252
def test_foo10_sizeof():
229-
assert Foo10.__fields_types__['c'].padding == 0
230-
assert Foo10.__fields_types__['p'].padding == 7
231-
assert Foo10.__fields_types__['s'].padding == 0
232-
assert sizeof("struct Foo10") == 24
233-
assert Foo10().size == 24
253+
if IS_64BITS:
254+
assert Foo10.__fields_types__['c'].padding == 0
255+
assert Foo10.__fields_types__['p'].padding == 7
256+
assert Foo10.__fields_types__['s'].padding == 0
257+
assert sizeof("struct Foo10") == 24
258+
assert Foo10().size == 24
259+
else:
260+
assert Foo10.__fields_types__['c'].padding == 0
261+
assert Foo10.__fields_types__['p'].padding == 3
262+
assert Foo10.__fields_types__['s'].padding == 0
263+
assert sizeof("struct Foo10") == 12
264+
assert Foo10().size == 12

0 commit comments

Comments
 (0)