from __future__ import annotations from pathlib import Path import sys from typing import Any import pytest import tomli_w from vibe.core import config_path def get_base_config() -> dict[str, Any]: return { "active_model": "devstral-latest", "providers": [ { "name": "mistral", "api_base": "https://api.mistral.ai/v1", "api_key_env_var": "MISTRAL_API_KEY", "backend": "mistral", } ], "models": [ { "name": "mistral-vibe-cli-latest", "provider": "mistral", "alias": "devstral-latest", } ], } @pytest.fixture(autouse=True) def config_dir( monkeypatch: pytest.MonkeyPatch, tmp_path_factory: pytest.TempPathFactory ) -> Path: tmp_path = tmp_path_factory.mktemp("vibe") config_dir = tmp_path / ".vibe" config_dir.mkdir(parents=True, exist_ok=True) config_file = config_dir / "config.toml" config_file.write_text(tomli_w.dumps(get_base_config()), encoding="utf-8") monkeypatch.setattr(config_path, "_DEFAULT_VIBE_HOME", config_dir) return config_dir @pytest.fixture(autouse=True) def _mock_api_key(monkeypatch: pytest.MonkeyPatch) -> None: monkeypatch.setenv("MISTRAL_API_KEY", "mock") @pytest.fixture(autouse=True) def _mock_platform(monkeypatch: pytest.MonkeyPatch) -> None: """Mock platform to be Linux with /bin/sh shell for consistent test behavior. This ensures that platform-specific system prompt generation is consistent across all tests regardless of the actual platform running the tests. """ monkeypatch.setattr(sys, "platform", "linux") monkeypatch.setenv("SHELL", "/bin/sh")