File size: 1,295 Bytes
b5b9c2e | 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 | """Tests for the top-level `./hermes` launcher script."""
import runpy
import sys
import types
from pathlib import Path
def test_launcher_delegates_to_argparse_entrypoint(monkeypatch):
"""`./hermes` should use `hermes_cli.main`, not the legacy Fire wrapper."""
launcher_path = Path(__file__).resolve().parents[2] / "hermes"
called = []
fake_main_module = types.ModuleType("hermes_cli.main")
def fake_main():
called.append("hermes_cli.main")
fake_main_module.main = fake_main
monkeypatch.setitem(sys.modules, "hermes_cli.main", fake_main_module)
fake_cli_module = types.ModuleType("cli")
def legacy_cli_main(*args, **kwargs):
raise AssertionError("launcher should not import cli.main")
fake_cli_module.main = legacy_cli_main
monkeypatch.setitem(sys.modules, "cli", fake_cli_module)
fake_fire_module = types.ModuleType("fire")
def legacy_fire(*args, **kwargs):
raise AssertionError("launcher should not invoke fire.Fire")
fake_fire_module.Fire = legacy_fire
monkeypatch.setitem(sys.modules, "fire", fake_fire_module)
monkeypatch.setattr(sys, "argv", [str(launcher_path), "gateway", "status"])
runpy.run_path(str(launcher_path), run_name="__main__")
assert called == ["hermes_cli.main"]
|