Spaces:
Paused
Paused
| """Sdílené fixtures — testy běží bez GPU, vLLM nahrazuje tests/mock_vllm.py.""" | |
| import os | |
| import socket | |
| import stat | |
| import sys | |
| from pathlib import Path | |
| import pytest | |
| ROOT = Path(__file__).resolve().parent.parent | |
| sys.path.insert(0, str(ROOT)) | |
| MOCK_VLLM = ROOT / "tests" / "mock_vllm.py" | |
| def free_port() -> int: | |
| with socket.socket() as s: | |
| s.bind(("127.0.0.1", 0)) | |
| return s.getsockname()[1] | |
| def _ensure_mock_executable(): | |
| mode = MOCK_VLLM.stat().st_mode | |
| MOCK_VLLM.chmod(mode | stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH) | |
| def env(tmp_path, monkeypatch): | |
| """Izolované prostředí: mock vLLM, tmp persistence, volný port.""" | |
| port = free_port() | |
| monkeypatch.setenv("VLLM_BINARY", str(MOCK_VLLM)) | |
| monkeypatch.setenv("ENGINE_PORT", str(port)) | |
| monkeypatch.setenv("ENGINE_LOG", str(tmp_path / "engine.log")) | |
| monkeypatch.setenv("ENGINE_STARTUP_TIMEOUT", "30") | |
| monkeypatch.setenv("SETTINGS_DIR", str(tmp_path)) | |
| monkeypatch.setenv("MODEL_DOWNLOAD_DIR", str(tmp_path / "downloads")) | |
| monkeypatch.setenv("LOCAL_MODEL_DIR", str(tmp_path / "local-models")) | |
| monkeypatch.setenv("PRELOAD_MODEL", "0") | |
| monkeypatch.setenv("AGENT_API_TOKEN", "test-token") | |
| monkeypatch.setenv("LOG_FILE", str(tmp_path / "app.log")) | |
| monkeypatch.setenv("MOCK_VLLM_STARTUP_DELAY", "0.4") | |
| monkeypatch.delenv("MOCK_VLLM_FAIL", raising=False) | |
| monkeypatch.delenv("MODEL_PRIMARY", raising=False) | |
| monkeypatch.delenv("LOCAL_RUNNER_URL", raising=False) | |
| return {"port": port, "tmp": tmp_path} | |
| def _fresh_import(names=("presets", "settings", "context", "toolservers", | |
| "engine", "app")): | |
| for name in names: | |
| sys.modules.pop(name, None) | |
| import importlib | |
| return {name: importlib.import_module(name) for name in names} | |
| def app_module(env): | |
| """Čerstvě naimportovaná aplikace s izolovaným prostředím.""" | |
| mods = _fresh_import() | |
| app = mods["app"] | |
| yield app | |
| app.ENGINE.stop() | |
| def engine_module(env): | |
| mods = _fresh_import(("presets", "settings", "engine")) | |
| yield mods["engine"] | |
| def settings_module(env): | |
| mods = _fresh_import(("presets", "settings")) | |
| yield mods["settings"] | |
| def auth(): | |
| return {"Authorization": "Bearer test-token"} | |