mirror of
https://github.com/open-jarvis/OpenJarvis.git
synced 2026-07-30 19:02:16 +00:00
51 lines
1.4 KiB
Python
51 lines
1.4 KiB
Python
"""Smoke test: every shipped preset config must load cleanly.
|
|
|
|
Presets are installed via `jarvis init --preset <name>`, which copies
|
|
`configs/openjarvis/examples/<name>.toml` to `~/.openjarvis/config.toml`.
|
|
A preset that fails to parse via `load_config()` would break first-time
|
|
setup, so we validate the whole set on every commit.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from pathlib import Path
|
|
|
|
import pytest
|
|
|
|
from openjarvis.core.config import JarvisConfig, load_config
|
|
|
|
PRESETS_DIR = (
|
|
Path(__file__).resolve().parents[2]
|
|
/ "configs"
|
|
/ "openjarvis"
|
|
/ "examples"
|
|
)
|
|
|
|
|
|
def _preset_paths() -> list[Path]:
|
|
return sorted(PRESETS_DIR.glob("*.toml"))
|
|
|
|
|
|
def test_presets_directory_exists() -> None:
|
|
assert PRESETS_DIR.is_dir(), f"presets dir missing: {PRESETS_DIR}"
|
|
|
|
|
|
def test_at_least_one_preset_ships() -> None:
|
|
assert _preset_paths(), f"no preset .toml files in {PRESETS_DIR}"
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"preset_path",
|
|
_preset_paths(),
|
|
ids=lambda p: p.stem,
|
|
)
|
|
def test_preset_loads(preset_path: Path) -> None:
|
|
cfg = load_config(path=preset_path)
|
|
assert isinstance(cfg, JarvisConfig)
|
|
# A preset must at least name an engine and an agent — those are the two
|
|
# slots `jarvis init` expects to be populated for a working first run.
|
|
assert cfg.engine.default, f"{preset_path.stem}: engine.default is empty"
|
|
assert cfg.agent.default_agent, (
|
|
f"{preset_path.stem}: agent.default_agent is empty"
|
|
)
|