"""Fixturi comune: totul in tmp, zero retea, zero Discord, zero API.""" from __future__ import annotations import os import pathlib import sys import pytest ROOT = pathlib.Path(__file__).resolve().parent.parent if str(ROOT) not in sys.path: sys.path.insert(0, str(ROOT)) import config # noqa: E402 FAKE_CLAUDE = str(pathlib.Path(__file__).resolve().parent / "fake_claude.py") @pytest.fixture(autouse=True) def state_dir(tmp_path, monkeypatch): """Muta ~/.claude-discord in tmp pentru fiecare test.""" d = tmp_path / "claude-discord" d.mkdir() monkeypatch.setenv("CLAUDE_DISCORD_DIR", str(d)) config.reload(d) config.ensure_dirs() yield d config.reload() @pytest.fixture def store(state_dir): import session_store s = session_store.SessionStore(state_dir / "state.json", alerter=lambda *a, **k: None) s.load() return s @pytest.fixture def fake_bin(): """Comanda care inlocuieste `claude` in teste.""" return [sys.executable, FAKE_CLAUDE] @pytest.fixture def scenario(monkeypatch): def _set(name: str, **env): monkeypatch.setenv("FAKE_CLAUDE_SCENARIO", name) for k, v in env.items(): monkeypatch.setenv(k, str(v)) return _set @pytest.fixture(autouse=True) def _no_real_claude(monkeypatch, request): """Nicio suita implicita nu are voie sa cheme `claude --version`.""" if "e2e" in request.keywords: return import stream monkeypatch.setattr(stream, "_cli_version_cache", "test-cli", raising=False) monkeypatch.setattr(stream, "cli_version", lambda: "test-cli")