test(config): add regression test for scalar model sub-key preservation

Verify that setting model.provider/model.api_key after a scalar model
assignment preserves the original model id as model.default.
This commit is contained in:
Baophan00
2026-07-31 23:22:28 +07:00
committed by Teknium
parent 3ba67fd7bd
commit 05103c6bde
+30
View File
@@ -658,3 +658,33 @@ class TestMappingGuard:
import yaml as _yaml
parsed = _yaml.safe_load(_read_config(_isolated_hermes_home))
assert parsed["model"] == "claude-opus-4"
class TestScalarModelSubKeyPreservation:
"""#75426: setting model.provider when model is a scalar must not lose the model id."""
def test_scalar_model_id_preserved_after_provider_write(self, _isolated_hermes_home):
"""Seed model: gpt-4o, then set model.provider → model.default must survive."""
import yaml
set_config_value("model", "gpt-4o")
set_config_value("model.provider", "openai")
raw = _read_config(_isolated_hermes_home)
parsed = yaml.safe_load(raw)
model = parsed["model"]
assert model["default"] == "gpt-4o", f"model.default lost: {model}"
assert model["provider"] == "openai"
def test_scalar_model_id_preserved_after_api_key_write(self, _isolated_hermes_home):
"""model.api_key must also preserve the existing scalar model id."""
import yaml
set_config_value("model", "claude-sonnet")
# model.api_key is a sub-key (has a dot), so it stays in config.yaml
set_config_value("model.api_key", "sk-test")
raw = _read_config(_isolated_hermes_home)
parsed = yaml.safe_load(raw)
assert parsed["model"]["default"] == "claude-sonnet"
assert parsed["model"]["api_key"] == "sk-test"