- Bump minimum Python version from 3.11 to 3.13 across all apps - Add Python 3.11-3.13 test matrix to CLI workflow - Document Python 3.11+ requirement in .env.example - Fix Starlette Broadcast removal with in-process fallback implementation - Add _InProcessBroadcast class for tests when Starlette Broadcast is unavailable - Refactor API key validators to read live settings instead of cached values - Update database models with explicit
38 lines
1.3 KiB
Python
38 lines
1.3 KiB
Python
"""Ensure coordinator-api src is on sys.path for all tests in this directory."""
|
|
|
|
import sys
|
|
import os
|
|
import tempfile
|
|
from pathlib import Path
|
|
import pytest
|
|
from sqlmodel import SQLModel, create_engine, Session
|
|
from app.models import MarketplaceOffer, MarketplaceBid
|
|
from app.domain.gpu_marketplace import ConsumerGPUProfile
|
|
|
|
_src = str(Path(__file__).resolve().parent.parent / "src")
|
|
|
|
# Remove any stale 'app' module loaded from a different package so the
|
|
# coordinator 'app' resolves correctly.
|
|
_app_mod = sys.modules.get("app")
|
|
if _app_mod and hasattr(_app_mod, "__file__") and _app_mod.__file__ and _src not in str(_app_mod.__file__):
|
|
for key in list(sys.modules):
|
|
if key == "app" or key.startswith("app."):
|
|
del sys.modules[key]
|
|
|
|
if _src not in sys.path:
|
|
sys.path.insert(0, _src)
|
|
|
|
# Set up test environment
|
|
os.environ["TEST_MODE"] = "true"
|
|
project_root = Path(__file__).resolve().parent.parent.parent
|
|
os.environ["AUDIT_LOG_DIR"] = str(project_root / "logs" / "audit")
|
|
os.environ["TEST_DATABASE_URL"] = "sqlite:///:memory:"
|
|
|
|
@pytest.fixture(scope="function")
|
|
def db_session():
|
|
"""Create a fresh database session for each test."""
|
|
engine = create_engine("sqlite:///:memory:", echo=False)
|
|
SQLModel.metadata.create_all(engine)
|
|
with Session(engine) as session:
|
|
yield session
|