Files
reyna-cli/tests/test_xcode_signing_contract.py
T
Adolfo Reyna 9fd04b0ce4 feat(privacy-host): add signed native calendar contacts and reminders host
Add the owner-only AF_UNIX Reyna CLI privacy host, strict signed-app installation, and typed native routing for Calendar, Contacts, and Reminders.\n\nAdd bounded system-status paths and config-only direct local-service wrappers. Preserve MacMiniMCP pending explicit cutover approval.\n\nApple Notes is intentionally deferred: no native Notes operations, Apple Events declaration, or Automation helper are included; legacy Notes handling remains untouched.
2026-08-03 20:27:54 -04:00

52 lines
2.4 KiB
Python

"""Static contract: project must not force ad-hoc CODE_SIGN_IDENTITY when using Automatic Signing."""
from pathlib import Path
import re
REPO_ROOT = Path(__file__).resolve().parents[1]
PBX = REPO_ROOT / "native" / "ReynaCLIHost" / "ReynaCLIHost.xcodeproj" / "project.pbxproj"
def _read_pbx() -> str:
assert PBX.exists(), f"project.pbxproj missing at {PBX}"
return PBX.read_text()
def test_no_forced_adhoc_code_sign_identity():
src = _read_pbx()
# Fail if any CODE_SIGN_IDENTITY variant is forced to "-" or ad-hoc
# Covers CODE_SIGN_IDENTITY and CODE_SIGN_IDENTITY[sdk=...]
pattern = re.compile(r'CODE_SIGN_IDENTITY.*?=\s*"?-"?\s*;', re.IGNORECASE)
matches = pattern.findall(src)
assert not matches, f"found forced ad-hoc CODE_SIGN_IDENTITY: {matches} in {PBX}"
# Also explicitly check literal '"-"'
assert '"CODE_SIGN_IDENTITY[sdk=macosx*]" = "-"' not in src
assert 'CODE_SIGN_IDENTITY = "-"' not in src
assert 'CODE_SIGN_IDENTITY = -' not in src
def test_automatic_signing_not_paired_with_forced_identity():
src = _read_pbx()
# If project uses CODE_SIGN_STYLE = Automatic, it must not also force CODE_SIGN_IDENTITY to ad-hoc
assert "CODE_SIGN_STYLE = Automatic" in src, "expected CODE_SIGN_STYLE=Automatic for durable identity"
# Scan buildSettings blocks containing Automatic - simplistic but effective
# Any occurrence of CODE_SIGN_IDENTITY with "-" while Automatic present is violation
has_adhoc = bool(re.search(r'CODE_SIGN_IDENTITY.*=\s*"?-"?\s*;', src))
has_auto = "CODE_SIGN_STYLE = Automatic" in src
assert not (has_auto and has_adhoc), (
"Automatic Signing paired with forced CODE_SIGN_IDENTITY=\"-\" defeats team signing; "
"remove forced identity so Xcode can use selected team"
)
def test_static_config_bundle_and_signing_style():
src = _read_pbx()
assert "com.reyna.cli.privacy-host" in src, "bundle ID must remain fixed"
assert "CODE_SIGN_STYLE = Automatic" in src
# Must not contain literal manual style when we expect automatic
# Ensure bundle id still present and no ad-hoc marker left
assert '"-" ' not in src or 'CODE_SIGN_IDENTITY' not in src.split('"-"')[0][-100:] # sanity
# Double-check no CODE_SIGN_IDENTITY forced at all (allow absence)
assert 'CODE_SIGN_IDENTITY[sdk=' not in src or '"-"' not in src, "ad-hoc identity marker still present"