Import AITURK IDE 1.0.0-beta.1 from Hermes 63279301; preserve MIT license
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
"""#84185: a Windows gateway cold-started after update that dies immediately
|
||||
(e.g. a job object denying breakaway) must not be reported as started.
|
||||
|
||||
``_cold_start_windows_gateway_after_update`` used to print the success line
|
||||
straight off a successful ``Popen`` return, which only proves the process was
|
||||
created, not that it survived. This asserts the observable output: the
|
||||
success line is gated on the process actually being found alive afterwards,
|
||||
same as every other ``_spawn_detached`` caller.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import pytest
|
||||
|
||||
from hermes_cli import gateway as hermes_gateway
|
||||
from hermes_cli import gateway_windows
|
||||
from hermes_cli import main as cli_main
|
||||
from hermes_cli import update_cmd
|
||||
|
||||
|
||||
def _run_cold_start(monkeypatch, capsys, *, surviving_pids):
|
||||
monkeypatch.setattr(cli_main, "_is_windows", lambda: True)
|
||||
|
||||
# The pre-spawn re-check (``all_profiles=True``) must find nothing
|
||||
# running so the cold-start path proceeds and actually spawns.
|
||||
monkeypatch.setattr(
|
||||
hermes_gateway,
|
||||
"find_gateway_pids",
|
||||
lambda all_profiles=False: [] if all_profiles else surviving_pids,
|
||||
)
|
||||
monkeypatch.setattr(gateway_windows, "_spawn_detached", lambda: 4242)
|
||||
# Avoid the real 6s/0.4s poll loop in _report_gateway_start.
|
||||
monkeypatch.setattr(
|
||||
gateway_windows, "_wait_for_gateway_ready", lambda *a, **k: surviving_pids
|
||||
)
|
||||
|
||||
update_cmd._cold_start_windows_gateway_after_update()
|
||||
|
||||
return capsys.readouterr().out
|
||||
|
||||
|
||||
def test_cold_start_raises_when_process_does_not_survive(monkeypatch, capsys):
|
||||
with pytest.raises(RuntimeError, match="did not become ready"):
|
||||
_run_cold_start(monkeypatch, capsys, surviving_pids=[])
|
||||
|
||||
assert "✓ Starting Windows gateway after update" not in capsys.readouterr().out
|
||||
|
||||
|
||||
def test_cold_start_reports_success_when_process_survives(monkeypatch, capsys):
|
||||
out = _run_cold_start(monkeypatch, capsys, surviving_pids=[4242])
|
||||
|
||||
assert "✓ Gateway started via cold-start after update" in out
|
||||
Reference in New Issue
Block a user