import os import sys # Permet à pytest de trouver le package `app` (à la racine du projet) # quel que soit le répertoire depuis lequel pytest est lancé. sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) # Les tests ne doivent pas dépendre du .env local (clé API réelle, valeurs # spécifiques à la machine, etc.). On coupe le load_dotenv() de # app/config.py en simulant un environnement "prod" avant l'import. os.environ.setdefault("RAILWAY_ENVIRONMENT", "test") # La transcription anticipée des segments lance des threads qui feraient varier l'ordre des appels # simulés dans les tests existants : désactivée par défaut, activée explicitement par ceux qui la testent. os.environ.setdefault("RECORDING_EARLY_TRANSCRIPTION", "0") import pytest # noqa: E402 from app.limiter import limiter # noqa: E402 @pytest.fixture(autouse=True) def _reset_rate_limiter(): """Le TestClient partage toujours la même IP factice ('testclient') : sans reset, les appels répétés à /api/transcribe/start entre tests dépasseraient RATE_LIMIT_PROCESS et casseraient des tests qui ne testent pas le rate limiting lui-même.""" limiter.reset() yield