| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- from __future__ import annotations
- import json
- import tempfile
- from pathlib import Path
- import unittest
- from model_selector.config import OpenClawConfigRepository
- SOURCE_CONFIG = Path("/home/lucky/.openclaw/openclaw.json")
- class ConfigRepositoryTests(unittest.TestCase):
- def test_alias_update_uses_copy_and_preserves_original(self) -> None:
- original_bytes = SOURCE_CONFIG.read_bytes()
- with tempfile.TemporaryDirectory() as tmp:
- temp_config = Path(tmp) / "openclaw.json"
- temp_config.write_bytes(original_bytes)
- repo = OpenClawConfigRepository(temp_config)
- loaded = repo.load()
- self.assertIn("models", loaded)
- repo.update_alias("openai/gpt-5.4", "osiris-test")
- updated = json.loads(temp_config.read_text(encoding="utf-8"))
- self.assertEqual(updated["agents"]["defaults"]["models"]["openai/gpt-5.4"]["alias"], "osiris-test")
- self.assertEqual(SOURCE_CONFIG.read_bytes(), original_bytes)
- def test_configured_models_parses_expected_shape(self) -> None:
- with tempfile.TemporaryDirectory() as tmp:
- temp_config = Path(tmp) / "openclaw.json"
- temp_config.write_bytes(SOURCE_CONFIG.read_bytes())
- repo = OpenClawConfigRepository(temp_config)
- models = repo.configured_models()
- self.assertTrue(any(model.full_key == "openai/gpt-5.4" for model in models))
- self.assertTrue(any(model.full_key == "groq-cloud/openai/gpt-oss-20b" for model in models))
- def test_add_and_remove_model_updates_only_copy(self) -> None:
- with tempfile.TemporaryDirectory() as tmp:
- temp_config = Path(tmp) / "openclaw.json"
- original_bytes = SOURCE_CONFIG.read_bytes()
- temp_config.write_bytes(original_bytes)
- repo = OpenClawConfigRepository(temp_config)
- repo.add_model(
- "openai",
- {
- "id": "gpt-5.4-test",
- "name": "GPT-5.4 Test",
- "reasoning": True,
- "input": ["text"],
- "contextWindow": 1024,
- "maxTokens": 256,
- },
- )
- after_add = repo.load()
- models = after_add["models"]["providers"]["openai"]["models"]
- self.assertTrue(any(model["id"] == "gpt-5.4-test" for model in models))
- repo.remove_model("openai/gpt-5.4-test")
- after_remove = repo.load()
- models = after_remove["models"]["providers"]["openai"]["models"]
- self.assertFalse(any(model["id"] == "gpt-5.4-test" for model in models))
- self.assertEqual(SOURCE_CONFIG.read_bytes(), original_bytes)
|