Files
aiturk-hermes-ide/tests/hermes_cli/test_fast_serve_launch.py
T

52 lines
2.1 KiB
Python

from __future__ import annotations
import argparse
import sys
import hermes_cli.config as config_mod
import hermes_cli.main as main_mod
from hermes_cli.subcommands.dashboard import build_dashboard_parser, build_serve_parser
def _capture(_args) -> None:
return None
def test_lean_serve_parser_matches_full_subcommand_parser() -> None:
root = argparse.ArgumentParser()
subparsers = root.add_subparsers(dest="command")
build_dashboard_parser(subparsers, cmd_dashboard=_capture, cmd_dashboard_register=_capture)
lean = build_serve_parser(cmd_dashboard=_capture)
argv = [
"--host", "127.0.0.1", "--port", "0", "--no-open",
"--ssh-session-token-file", "token.txt", "--ssh-owner-nonce", "0123456789abcdef",
]
assert vars(lean.parse_args(argv)) == vars(root.parse_args(["serve", *argv]))
def test_fast_serve_launch_dispatches_only_unambiguous_serve(monkeypatch) -> None:
captured = []
monkeypatch.setattr(config_mod, "get_container_exec_info", lambda: None)
monkeypatch.setattr(main_mod, "cmd_dashboard", captured.append)
monkeypatch.setattr(sys, "argv", ["hermes", "serve", "--host", "127.0.0.1", "--port", "0"])
assert main_mod._try_fast_serve_launch() is True
assert (captured[0].command, captured[0].headless_backend, captured[0].no_open, captured[0].port) == (
"serve", True, True, 0,
)
# Every ambiguous shape falls back to the full parser: unknown flags,
# help, the opt-out, and container routing.
for argv in (["serve", "--future-flag"], ["serve", "--help"], ["chat"]):
monkeypatch.setattr(sys, "argv", ["hermes", *argv])
assert main_mod._try_fast_serve_launch() is False
monkeypatch.setenv("HERMES_DISABLE_FAST_SERVE_LAUNCH", "1")
monkeypatch.setattr(sys, "argv", ["hermes", "serve"])
assert main_mod._try_fast_serve_launch() is False
monkeypatch.delenv("HERMES_DISABLE_FAST_SERVE_LAUNCH")
monkeypatch.setattr(config_mod, "get_container_exec_info", lambda: {"name": "managed"})
assert main_mod._try_fast_serve_launch() is False
assert len(captured) == 1