1
1
from __future__ import annotations
2
2
3
+ import platform
3
4
import re
5
+ import struct
6
+ import sys
4
7
from contextlib import nullcontext as does_not_raise
5
- from unittest .mock import patch
6
8
7
9
import pytest
8
10
@@ -32,8 +34,6 @@ def raises(exception, match=None, escape=True):
32
34
return pytest .raises (exception , match = match )
33
35
34
36
35
- @patch ("auditwheel.policy._platform_module.machine" )
36
- @patch ("auditwheel.policy.bits" , 32 )
37
37
@pytest .mark .parametrize (
38
38
"reported_arch,expected_arch" ,
39
39
[
@@ -45,14 +45,12 @@ def raises(exception, match=None, escape=True):
45
45
("x86_64" , "i686" ),
46
46
],
47
47
)
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 )
51
51
assert machine == expected_arch
52
52
53
53
54
- @patch ("auditwheel.policy._platform_module.machine" )
55
- @patch ("auditwheel.policy.bits" , 64 )
56
54
@pytest .mark .parametrize (
57
55
"reported_arch,expected_arch" ,
58
56
[
@@ -63,12 +61,35 @@ def test_32bits_arch_name(machine_mock, reported_arch, expected_arch):
63
61
("x86_64" , "x86_64" ),
64
62
],
65
63
)
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 )
69
67
assert machine == expected_arch
70
68
71
69
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
+
72
93
@pytest .mark .parametrize (
73
94
"name,expected" ,
74
95
[
0 commit comments