50 lines
1.6 KiB
Python
50 lines
1.6 KiB
Python
#!/usr/bin/env python3
|
|
"""Regression: terminal views should be portal-hosted near the window root.
|
|
|
|
This catches regressions where terminal NSViews are reattached deep inside the SwiftUI
|
|
hierarchy, which increases Core Animation commit traversal depth and input latency.
|
|
"""
|
|
|
|
import os
|
|
import sys
|
|
import time
|
|
from pathlib import Path
|
|
|
|
sys.path.insert(0, str(Path(__file__).parent))
|
|
from cmux import cmux, cmuxError
|
|
|
|
|
|
SOCKET_PATH = os.environ.get("CMUX_SOCKET", "/tmp/cmux-debug.sock")
|
|
|
|
|
|
def main() -> int:
|
|
with cmux(SOCKET_PATH) as c:
|
|
c.activate_app()
|
|
|
|
c.new_workspace()
|
|
time.sleep(0.2)
|
|
c.new_split("right")
|
|
time.sleep(0.8)
|
|
|
|
health = c.surface_health()
|
|
terminals = [row for row in health if row.get("type") == "terminal"]
|
|
if len(terminals) < 2:
|
|
raise cmuxError(f"expected >=2 terminal surfaces after split, got={terminals}")
|
|
|
|
for row in terminals:
|
|
if not row.get("in_window", False):
|
|
raise cmuxError(f"terminal not attached to window: {row}")
|
|
if row.get("portal") is not True:
|
|
raise cmuxError(f"terminal is not portal-hosted: {row}")
|
|
depth = row.get("view_depth")
|
|
if not isinstance(depth, int):
|
|
raise cmuxError(f"missing view_depth in surface_health: {row}")
|
|
if depth > 8:
|
|
raise cmuxError(f"terminal view depth too deep ({depth}): {row}")
|
|
|
|
print("PASS: terminal surfaces are portal-hosted with shallow view depth")
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
raise SystemExit(main())
|