11from __future__ import annotations
22
3+ import platform
34import re
5+ import struct
6+ import sys
47from contextlib import nullcontext as does_not_raise
5- from unittest .mock import patch
68
79import pytest
810
@@ -32,8 +34,6 @@ def raises(exception, match=None, escape=True):
3234 return pytest .raises (exception , match = match )
3335
3436
35- @patch ("auditwheel.policy._platform_module.machine" )
36- @patch ("auditwheel.policy.bits" , 32 )
3737@pytest .mark .parametrize (
3838 "reported_arch,expected_arch" ,
3939 [
@@ -45,14 +45,12 @@ def raises(exception, match=None, escape=True):
4545 ("x86_64" , "i686" ),
4646 ],
4747)
48- def test_32bits_arch_name (machine_mock , reported_arch , expected_arch ):
49- machine_mock . return_value = reported_arch
50- machine = get_arch_name ()
48+ def test_32bits_arch_name (reported_arch , expected_arch , monkeypatch ):
49+ monkeypatch . setattr ( platform , "machine" , lambda : reported_arch )
50+ machine = get_arch_name (bits = 32 )
5151 assert machine == expected_arch
5252
5353
54- @patch ("auditwheel.policy._platform_module.machine" )
55- @patch ("auditwheel.policy.bits" , 64 )
5654@pytest .mark .parametrize (
5755 "reported_arch,expected_arch" ,
5856 [
@@ -63,12 +61,35 @@ def test_32bits_arch_name(machine_mock, reported_arch, expected_arch):
6361 ("x86_64" , "x86_64" ),
6462 ],
6563)
66- def test_64bits_arch_name (machine_mock , reported_arch , expected_arch ):
67- machine_mock . return_value = reported_arch
68- machine = get_arch_name ()
64+ def test_64bits_arch_name (reported_arch , expected_arch , monkeypatch ):
65+ monkeypatch . setattr ( platform , "machine" , lambda : reported_arch )
66+ machine = get_arch_name (bits = 64 )
6967 assert machine == expected_arch
7068
7169
70+ @pytest .mark .parametrize (
71+ "maxsize, sizeof_voidp, expected" ,
72+ [
73+ # 64-bit
74+ (9223372036854775807 , 8 , "x86_64" ),
75+ # 32-bit
76+ (2147483647 , 4 , "i686" ),
77+ # 64-bit w/ 32-bit sys.maxsize: GraalPy, IronPython, Jython
78+ (2147483647 , 8 , "x86_64" ),
79+ ],
80+ )
81+ def test_arch_name_bits (maxsize , sizeof_voidp , expected , monkeypatch ):
82+ def _calcsize (fmt ):
83+ assert fmt == "P"
84+ return sizeof_voidp
85+
86+ monkeypatch .setattr (platform , "machine" , lambda : "x86_64" )
87+ monkeypatch .setattr (sys , "maxsize" , maxsize )
88+ monkeypatch .setattr (struct , "calcsize" , _calcsize )
89+ machine = get_arch_name ()
90+ assert machine == expected
91+
92+
7293@pytest .mark .parametrize (
7394 "name,expected" ,
7495 [
0 commit comments