File size: 2,002 Bytes
e65cda1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
"""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")