Files
wehub-resource-sync b4fbd6fe9f
Deploy Site / deploy-vercel (push) Has been skipped
Deploy Site / deploy-docs (push) Has been skipped
Build Skills Index / build-index (push) Has been skipped
CI / Deny unrelated histories (push) Has been skipped
CI / Detect affected areas (push) Successful in 27m35s
CI / OSV scan (push) Failing after 4s
CI / Build&Test Docker image (push) Successful in 9s
CI / Supply-chain scan (push) Has been skipped
CI / Lint Docker scripts (push) Failing after 5m13s
CI / Check contributors (push) Failing after 12m8s
CI / Docs Site (push) Failing after 12m8s
CI / TypeScript (push) Failing after 12m8s
CI / Python lints (push) Failing after 12m9s
CI / Python tests (push) Failing after 12m9s
CI / Check uv.lock (push) Failing after 23m22s
CI / CI timing report (push) Has been cancelled
Build Skills Index / trigger-deploy (push) Has been cancelled
CI / All required checks pass (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 11:56:03 +08:00

70 lines
2.3 KiB
Python

"""apply_managed_overlay() — the shared helper used by every standalone loader."""
import textwrap
import pytest
@pytest.fixture
def managed(tmp_path, monkeypatch):
md = tmp_path / "managed"
md.mkdir()
monkeypatch.setenv("HERMES_MANAGED_DIR", str(md))
from hermes_cli import managed_scope
managed_scope.invalidate_managed_cache()
return md
def _write(md, body):
(md / "config.yaml").write_text(textwrap.dedent(body), encoding="utf-8")
from hermes_cli import managed_scope
managed_scope.invalidate_managed_cache()
def test_overlay_noop_without_scope(tmp_path, monkeypatch):
from hermes_cli import managed_scope
monkeypatch.setenv("HERMES_MANAGED_DIR", str(tmp_path / "nope"))
managed_scope.invalidate_managed_cache()
src = {"display": {"skin": "user"}}
assert managed_scope.apply_managed_overlay(src) == {"display": {"skin": "user"}}
def test_overlay_managed_wins(managed):
from hermes_cli import managed_scope
_write(managed, "display:\n skin: charizard\n")
out = managed_scope.apply_managed_overlay({"display": {"skin": "user"}})
assert out["display"]["skin"] == "charizard"
def test_overlay_preserves_user_siblings(managed):
from hermes_cli import managed_scope
_write(managed, "display:\n skin: charizard\n")
out = managed_scope.apply_managed_overlay(
{"display": {"skin": "user", "show_reasoning": True}}
)
assert out["display"]["skin"] == "charizard"
assert out["display"]["show_reasoning"] is True
def test_overlay_normalizes_root_model_string(managed):
"""A managed bare `model: x/y` must promote to model.default, not clobber the dict."""
from hermes_cli import managed_scope
_write(managed, "model: org/locked\n")
out = managed_scope.apply_managed_overlay({"model": {"default": "user/m", "fallback": "u/fb"}})
assert out["model"]["default"] == "org/locked" # managed wins
assert out["model"]["fallback"] == "u/fb" # user sibling preserved (dict shape intact)
def test_overlay_user_envref_cannot_shadow_managed_literal(managed, monkeypatch):
from hermes_cli import managed_scope
monkeypatch.setenv("EVIL", "user/override")
_write(managed, "model:\n default: managed/locked\n")
out = managed_scope.apply_managed_overlay({"model": {"default": "${EVIL}"}})
assert out["model"]["default"] == "managed/locked"