| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- """Tests for macOS runtime wheel deployment-target validation."""
- from __future__ import annotations
- import runpy
- from pathlib import Path
- from types import SimpleNamespace
- import pytest
- ROOT = Path(__file__).resolve().parents[3]
- SCRIPT = ROOT / "scripts" / "check-macos-deployment-target.py"
- checker = SimpleNamespace(**runpy.run_path(str(SCRIPT)))
- def test_otool_parser_uses_the_newest_macho_slice() -> None:
- output = """
- Load command 8
- cmd LC_VERSION_MIN_MACOSX
- cmdsize 16
- version 10.7
- sdk 11.1
- Load command 9
- cmd LC_BUILD_VERSION
- minos 11.0
- Load command 10
- cmd LC_BUILD_VERSION
- minos 13.5
- """
- assert checker.parse_otool_deployment_target(output) == (13, 5)
- def test_otool_parser_requires_a_deployment_target() -> None:
- with pytest.raises(ValueError, match="contains no macOS deployment target"):
- checker.parse_otool_deployment_target("Load command 0\n")
- def test_otool_parser_ignores_unrelated_version_fields() -> None:
- output = """
- Load command 1
- cmd LC_ID_DYLIB
- cmdsize 48
- current version 14.1.0
- compatibility version 1.0.0
- """
- with pytest.raises(ValueError, match="contains no macOS deployment target"):
- checker.parse_otool_deployment_target(output)
- def test_wheel_tag_rejects_a_newer_executable_target() -> None:
- checker.ensure_compatible(Path("runtime"), (13, 5), "macosx_14_0_arm64")
- checker.ensure_compatible(Path("runtime-x64"), (10, 7), "macosx_14_0_x86_64")
- with pytest.raises(RuntimeError, match="requires macOS 14.1"):
- checker.ensure_compatible(Path("spawn-helper"), (14, 1), "macosx_14_0_arm64")
- def test_wheel_tag_accepts_only_supported_macos_architectures() -> None:
- assert checker.claimed_version("macosx_14_0_arm64") == (14, 0)
- assert checker.claimed_version("macosx_14_0_x86_64") == (14, 0)
- with pytest.raises(ValueError, match="unsupported macOS wheel platform tag"):
- checker.claimed_version("macosx_14_0_universal2")
|