import os import pytest from fastapi.testclient import TestClient @pytest.fixture def client(tmp_data_dir): from imptune.main import app with TestClient(app) as c: yield c @pytest.fixture def tmp_data_dir(tmp_path, monkeypatch): """Set DATA_DIR to a temp directory so tests don't write to /data.""" data_dir = tmp_path / "data" data_dir.mkdir() monkeypatch.setenv("DATA_DIR", str(data_dir)) # Patch config module so the app uses the temp dir import imptune.config as cfg cfg.DATA_DIR = str(data_dir) cfg.DB_PATH = str(data_dir / "imptune.db") cfg.DRIVERS_DIR = str(data_dir / "drivers") yield data_dir # Close the test-thread's DB connection so the next test gets a fresh one # pointing to its own tmp DB (Peewee connections are thread-local). from imptune.db.database import db if not db.is_closed(): db.close()