mirror of
https://github.com/headroomlabs-ai/headroom.git
synced 2026-08-27 14:17:10 -04:00
Add focused regression coverage for install, runtime, provider, state, health, supervisor, and persistent wrap flows so the new persistent deployment surfaces are exercised more thoroughly in CI. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
63 lines
2 KiB
Python
63 lines
2 KiB
Python
from __future__ import annotations
|
|
|
|
from pathlib import Path
|
|
|
|
from headroom.install.models import ArtifactRecord, DeploymentManifest, ManagedMutation
|
|
from headroom.install.state import delete_manifest, list_manifests, load_manifest, save_manifest
|
|
|
|
|
|
def _manifest() -> DeploymentManifest:
|
|
return DeploymentManifest(
|
|
profile="default",
|
|
preset="persistent-service",
|
|
runtime_kind="python",
|
|
supervisor_kind="service",
|
|
scope="user",
|
|
provider_mode="manual",
|
|
targets=["claude"],
|
|
port=8787,
|
|
host="127.0.0.1",
|
|
backend="anthropic",
|
|
mutations=[ManagedMutation(target="env", kind="shell-block", path="x")],
|
|
artifacts=[ArtifactRecord(kind="script", path="run-headroom.sh")],
|
|
)
|
|
|
|
|
|
def test_save_and_load_manifest_round_trip(monkeypatch, tmp_path: Path) -> None:
|
|
monkeypatch.setattr(Path, "home", lambda: tmp_path)
|
|
manifest = _manifest()
|
|
|
|
save_manifest(manifest)
|
|
loaded = load_manifest("default")
|
|
|
|
assert loaded is not None
|
|
assert loaded.profile == "default"
|
|
assert loaded.mutations[0].kind == "shell-block"
|
|
assert loaded.artifacts[0].kind == "script"
|
|
|
|
|
|
def test_list_manifests_ignores_invalid_payloads(monkeypatch, tmp_path: Path) -> None:
|
|
monkeypatch.setattr(Path, "home", lambda: tmp_path)
|
|
valid = _manifest()
|
|
save_manifest(valid)
|
|
|
|
broken_dir = tmp_path / ".headroom" / "deploy" / "broken"
|
|
broken_dir.mkdir(parents=True)
|
|
(broken_dir / "manifest.json").write_text("{not json", encoding="utf-8")
|
|
|
|
manifests = list_manifests()
|
|
|
|
assert [manifest.profile for manifest in manifests] == ["default"]
|
|
|
|
|
|
def test_delete_manifest_removes_profile_root(monkeypatch, tmp_path: Path) -> None:
|
|
monkeypatch.setattr(Path, "home", lambda: tmp_path)
|
|
manifest = _manifest()
|
|
save_manifest(manifest)
|
|
extra_file = tmp_path / ".headroom" / "deploy" / "default" / "runner.log"
|
|
extra_file.write_text("log", encoding="utf-8")
|
|
|
|
delete_manifest("default")
|
|
|
|
assert load_manifest("default") is None
|
|
assert not extra_file.parent.exists()
|