45 lines
2.0 KiB
Python
45 lines
2.0 KiB
Python
# conftest.py at backend root
|
|
# Prevents pytest collection errors caused by duplicate test module names
|
|
# between the root tests/ directory and co-located src/<module>/__tests__/ directories.
|
|
# Without this, pytest sees e.g. tests/test_auth.py and src/core/auth/__tests__/test_auth.py
|
|
# and raises "import file mismatch" because both map to module name "test_auth".
|
|
|
|
import os
|
|
import tempfile
|
|
from cryptography.fernet import Fernet
|
|
|
|
# Set ENCRYPTION_KEY for EncryptionManager before any module imports
|
|
# Required by LLMProviderService which is imported via route modules
|
|
os.environ.setdefault("ENCRYPTION_KEY", Fernet.generate_key().decode())
|
|
|
|
# Test DB defaults. This conftest loads BEFORE tests/conftest.py, and the
|
|
# integration fixture plugins below import src.core.database at module load
|
|
# time (which requires DATABASE_URL). Same temp-file SQLite scheme as
|
|
# tests/conftest.py so unit runs keep identical behavior.
|
|
_TEST_DB_FILE = tempfile.NamedTemporaryFile(suffix="_ss_tools_root.db", delete=False)
|
|
_TEST_DB_PATH = _TEST_DB_FILE.name
|
|
_TEST_DB_FILE.close()
|
|
|
|
os.environ.setdefault("DATABASE_URL", f"sqlite:///{_TEST_DB_PATH}")
|
|
|
|
# Integration-test fixture plugins. Declared at the top-level (rootdir) conftest
|
|
# because pytest >= 8.2 raises an error for `pytest_plugins` defined in a
|
|
# non-top-level conftest (previously a deprecation warning). Fixture definitions
|
|
# live in tests/integration/fixtures/*.py and only start Docker containers when a
|
|
# test actually requests them, so unit runs are unaffected.
|
|
pytest_plugins = [
|
|
"tests.integration.fixtures.network",
|
|
"tests.integration.fixtures.postgres",
|
|
"tests.integration.fixtures.pki",
|
|
"tests.integration.fixtures.config",
|
|
"tests.integration.fixtures.superset",
|
|
]
|
|
|
|
# Files in tests/ that clash with __tests__/ co-located tests.
|
|
# norecursedirs=["__tests__"] in pyproject.toml prevents collection from src/__tests__/
|
|
# at the directory level; this list handles edge cases where explicit file paths
|
|
# are collected.
|
|
collect_ignore = [
|
|
os.path.join("tests", "schemas", "test_auth.py"),
|
|
]
|