47 lines
1.8 KiB
Python
47 lines
1.8 KiB
Python
from __future__ import annotations
|
|
|
|
from collections.abc import Generator
|
|
import os
|
|
|
|
import pytest
|
|
|
|
from gitea_codex_bot.config import get_settings
|
|
from gitea_codex_bot.db import Base, get_engine, get_session_factory
|
|
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _env_defaults(monkeypatch: pytest.MonkeyPatch, tmp_path, request: pytest.FixtureRequest) -> Generator[None, None, None]:
|
|
monkeypatch.setenv("GITEA_BASE_URL", "https://gitea.test")
|
|
monkeypatch.setenv("GITEA_TOKEN", "token")
|
|
monkeypatch.setenv("GITEA_BOT_USERNAME", "codex-bot")
|
|
monkeypatch.setenv("GITEA_WEBHOOK_SECRET", "secret")
|
|
monkeypatch.setenv("OPENAI_API_KEY", "openai-key")
|
|
monkeypatch.setenv("CODEX_AUTH_MODE", "api_key")
|
|
monkeypatch.delenv("CODEX_AUTH_JSON_PATH", raising=False)
|
|
monkeypatch.setenv("ALLOWED_REPOS", "acme/repo")
|
|
monkeypatch.setenv("COOLDOWN_SECONDS", "60")
|
|
monkeypatch.setenv("WEBHOOK_MODE", "repo")
|
|
monkeypatch.setenv("DB_HOST", "localhost")
|
|
monkeypatch.setenv("DB_PORT", "3306")
|
|
monkeypatch.setenv("DB_NAME", "ignored")
|
|
monkeypatch.setenv("DB_USER", "ignored")
|
|
monkeypatch.setenv("DB_PASSWORD", "ignored")
|
|
database_url = os.getenv("TEST_DATABASE_URL", "").strip() or f"sqlite+pysqlite:///{tmp_path / 'test.db'}"
|
|
monkeypatch.setenv("DATABASE_URL", database_url)
|
|
monkeypatch.setenv("WORKDIR", str(tmp_path / "work"))
|
|
|
|
get_settings.cache_clear()
|
|
get_engine.cache_clear()
|
|
get_session_factory.cache_clear()
|
|
|
|
engine = get_engine()
|
|
skip_schema = request.node.get_closest_marker("no_schema") is not None
|
|
if not skip_schema:
|
|
Base.metadata.create_all(bind=engine)
|
|
yield
|
|
if not skip_schema:
|
|
Base.metadata.drop_all(bind=engine)
|
|
get_settings.cache_clear()
|
|
get_engine.cache_clear()
|
|
get_session_factory.cache_clear()
|