Import AITURK IDE 1.0.0-beta.1 from Hermes 63279301; preserve MIT license
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
"""The decomposed command modules stay lazy after `import hermes_cli.main`.
|
||||
|
||||
The main.py decomposition re-exports the sessions/update/dashboard command
|
||||
surface from hermes_cli.main so argparse wiring and monkeypatches keep
|
||||
resolving. Those re-exports must not import the modules eagerly: every
|
||||
`hermes` invocation (including `hermes --version`) would pay for update_cmd's
|
||||
dependency chain (jwt, click, ...) even when no subcommand runs.
|
||||
"""
|
||||
|
||||
import subprocess
|
||||
import sys
|
||||
import textwrap
|
||||
|
||||
import hermes_cli.main
|
||||
|
||||
|
||||
def test_importing_main_does_not_import_command_modules():
|
||||
code = textwrap.dedent(
|
||||
"""
|
||||
import sys
|
||||
import hermes_cli.main # noqa: F401
|
||||
loaded = [
|
||||
m
|
||||
for m in (
|
||||
"hermes_cli.update_cmd",
|
||||
"hermes_cli.sessions_cmd",
|
||||
"hermes_cli.dashboard_procs",
|
||||
)
|
||||
if m in sys.modules
|
||||
]
|
||||
assert not loaded, f"eagerly imported: {loaded}"
|
||||
"""
|
||||
)
|
||||
result = subprocess.run(
|
||||
[sys.executable, "-c", code],
|
||||
capture_output=True,
|
||||
text=True,
|
||||
timeout=120,
|
||||
)
|
||||
assert result.returncode == 0, result.stderr
|
||||
|
||||
|
||||
def test_lazy_reexports_resolve_to_real_objects():
|
||||
import hermes_cli.dashboard_procs
|
||||
import hermes_cli.sessions_cmd
|
||||
import hermes_cli.update_cmd
|
||||
|
||||
assert hermes_cli.main.cmd_sessions is hermes_cli.sessions_cmd.cmd_sessions
|
||||
assert (
|
||||
hermes_cli.main._cmd_update_impl is hermes_cli.update_cmd._cmd_update_impl
|
||||
)
|
||||
assert (
|
||||
hermes_cli.main._scan_dashboard_processes
|
||||
is hermes_cli.dashboard_procs._scan_dashboard_processes
|
||||
)
|
||||
# Back-compat alias resolves to the kill helper.
|
||||
assert (
|
||||
hermes_cli.main._warn_stale_dashboard_processes
|
||||
is hermes_cli.dashboard_procs._kill_stale_dashboard_processes
|
||||
)
|
||||
|
||||
|
||||
def test_lazy_reexports_accept_monkeypatch(monkeypatch):
|
||||
sentinel = object()
|
||||
monkeypatch.setattr("hermes_cli.main._cmd_update_impl", sentinel)
|
||||
assert hermes_cli.main._cmd_update_impl is sentinel
|
||||
Reference in New Issue
Block a user