import os import sys import tempfile from pathlib import Path _database_file = tempfile.NamedTemporaryFile( prefix="company-ai-platform-tests-", suffix=".db", delete=False, ) _database_file.close() _database_path = Path(_database_file.name) # This module is loaded before test modules are imported. Keep every suite run isolated # from a developer's local .env, database, queues, and external AI/Feishu credentials. os.environ.update( { "COMPANY_AI_DISABLE_DOTENV": "true", "APP_ENV": "test", "DATABASE_URL": f"sqlite:///{_database_path.as_posix()}", "LEGACY_DATABASE_URL": "", "LEGACY_ALLOWED_QUERIES": "{}", "LEGACY_PROJECT_QUERY": "", "LEGACY_TASK_QUERY": "", "API_KEY": "test-key", "API_KEYS": "[]", "AUDIT_API_KEY": "audit-key", "AUDIT_API_KEYS": "[]", "AUDIT_API_ACTOR": "audit-manager", "MODEL_PROVIDER": "noop", "DIRECT_LLM_API_KEY": "", "HERMES_API_KEY": "", "OPENCLAW_API_KEY": "", "OPENCLAW_GATEWAY_TOKEN": "", "FEISHU_APP_ID": "", "FEISHU_APP_SECRET": "", "FEISHU_ENCRYPT_KEY": "", "FEISHU_DEFAULT_CHAT_ID": "", "FEISHU_VERIFICATION_TOKEN": "test-feishu-token", "FEISHU_ADMIN_IDENTITIES": "", "FEISHU_USER_FEATURES_ENABLED": "false", "MARKET_DATA_TOKEN": "", "SCHEDULER_ENABLED": "false", "TASK_QUEUE_ENABLED": "false", "TASK_QUEUE_ALWAYS_EAGER": "false", "LEGACY_SYNC_ENABLED": "false", } ) def pytest_sessionfinish() -> None: """Remove the suite database after every test module has finished.""" database_module = sys.modules.get("app.core.database.session") if database_module is not None: database_module.engine.dispose() if database_module.legacy_engine is not None: database_module.legacy_engine.dispose() _database_path.unlink(missing_ok=True)