pypa-hatch/tests/backend/utils/test_macos.py

57 lines
2.1 KiB
Python

from __future__ import annotations
import platform
import pytest
from hatchling.builders.macos import normalize_macos_version, process_macos_plat_tag
@pytest.mark.parametrize(
('plat', 'arch', 'compat', 'archflags', 'deptarget', 'expected'),
[
('macosx_10_9_x86_64', 'x86_64', False, '', '', 'macosx_10_9_x86_64'),
('macosx_11_9_x86_64', 'x86_64', False, '', '', 'macosx_11_0_x86_64'),
('macosx_12_0_x86_64', 'x86_64', True, '', '', 'macosx_10_16_x86_64'),
('macosx_10_9_arm64', 'arm64', False, '', '', 'macosx_11_0_arm64'),
('macosx_10_9_arm64', 'arm64', False, '-arch x86_64 -arch arm64', '', 'macosx_10_9_universal2'),
('macosx_10_9_x86_64', 'x86_64', False, '-arch x86_64 -arch arm64', '', 'macosx_10_9_universal2'),
('macosx_10_9_x86_64', 'x86_64', False, '-arch x86_64 -arch arm64', '12', 'macosx_12_0_universal2'),
('macosx_10_9_x86_64', 'x86_64', False, '-arch arm64', '12.4', 'macosx_12_0_arm64'),
('macosx_10_9_x86_64', 'x86_64', False, '-arch arm64', '10.12', 'macosx_11_0_arm64'),
('macosx_10_9_x86_64', 'x86_64', True, '-arch arm64', '10.12', 'macosx_10_16_arm64'),
],
)
def test_process_macos_plat_tag(
monkeypatch: pytest.MonkeyPatch,
*,
plat: str,
arch: str,
compat: bool,
archflags: str,
deptarget: str,
expected: str,
) -> None:
monkeypatch.setenv('ARCHFLAGS', archflags)
monkeypatch.setenv('MACOSX_DEPLOYMENT_TARGET', deptarget)
monkeypatch.setattr(platform, 'machine', lambda: arch)
assert process_macos_plat_tag(plat, compat=compat) == expected
@pytest.mark.parametrize(
('version', 'arm', 'compat', 'expected'),
[
('10_9', False, False, '10_9'),
('10_9', False, True, '10_9'),
('10_9', True, False, '11_0'),
('10_9', True, True, '10_9'),
('11_3', False, False, '11_0'),
('12_3', True, False, '12_0'),
('12_3', False, True, '10_16'),
('12_3', True, True, '10_16'),
],
)
def check_normalization(*, version: str, arm: bool, compat: bool, expected: str) -> None:
assert normalize_macos_version(version, arm=arm, compat=compat) == expected