tests: pin ink engine in _make_tui_argv npm-bootstrap tests (post-merge semantic fix)

Main's rewritten test_tui_npm_install.py tests call _make_tui_argv expecting
the Ink/npm flow unconditionally; with the dual-engine dispatch merged in,
_resolve_tui_engine() auto-selects opentui whenever ui-opentui/dist is built
in the repo, routing the call away from the path under test (first subprocess
became 'node --version' instead of 'npm run build'). Pin the engine to ink
via an autouse fixture, mirroring the existing pinning precedent in
test_tui_resume_flow.py.
This commit is contained in:
alt-glitch 2026-06-12 10:32:40 +05:30
parent ab37440ce6
commit e1067dbbe5
756 changed files with 79874 additions and 19585 deletions

View file

@ -355,6 +355,44 @@ def base_url_hostname(base_url: str) -> str:
return (parsed.hostname or "").lower().rstrip(".")
# ─── Model Capability Detection ──────────────────────────────────────────────
def model_forces_max_completion_tokens(model: str) -> bool:
"""Return True for model families that require ``max_completion_tokens``.
OpenAI's newer families reject ``max_tokens`` on /v1/chat/completions with
HTTP 400 ``unsupported_parameter`` the caller must send
``max_completion_tokens`` instead. This covers:
- ``gpt-4o`` / ``gpt-4o-mini`` / ``gpt-4o-*``
- ``gpt-4.1`` / ``gpt-4.1-*``
- ``gpt-5`` / ``gpt-5.x`` / ``gpt-5-*``
- ``o1`` / ``o1-*``
- ``o3`` / ``o3-*``
- ``o4`` / ``o4-*``
Handles vendor prefixes like ``openai/gpt-5.4`` by stripping to the tail.
The URL-based check (``base_url_hostname == "api.openai.com"``) misses
third-party OpenAI-compatible endpoints (custom OpenAI gateways,
OpenRouter) that front these models and enforce the same parameter
constraint, so name-based detection is required as a fallback.
"""
m = (model or "").strip().lower()
if not m:
return False
if "/" in m:
m = m.rsplit("/", 1)[-1]
return (
m.startswith("gpt-4o")
or m.startswith("gpt-4.1")
or m.startswith("gpt-5")
or m.startswith("o1")
or m.startswith("o3")
or m.startswith("o4")
)
def base_url_host_matches(base_url: str, domain: str) -> bool:
"""Return True when the base URL's hostname is ``domain`` or a subdomain.