| """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"] |
|
|