Files
AI/ontology_platform/tests/conftest.py

49 lines
1.3 KiB
Python
Raw Normal View History

2026-05-13 19:57:34 +09:00
"""Pytest configuration for all tests.
Ensures proper sys.path setup so that:
1. `platform.*` modules are imported from ./platform (not stdlib)
2. `ontocast.*` modules are imported from ./vendored/ontocast
"""
from __future__ import annotations
2026-05-19 20:31:52 +09:00
import asyncio
import inspect
2026-05-13 19:57:34 +09:00
import sys
from pathlib import Path
REPO_ROOT = Path(__file__).resolve().parent.parent
VENDORED_ONTOCAST = REPO_ROOT / "vendored" / "ontocast"
for p in (REPO_ROOT, VENDORED_ONTOCAST):
p_str = str(p)
if p_str not in sys.path:
sys.path.insert(0, p_str)
# Remove stdlib 'platform' to avoid conflict with our platform package
if "platform" in sys.modules:
del sys.modules["platform"]
2026-05-19 20:31:52 +09:00
def pytest_configure(config):
config.addinivalue_line("markers", "asyncio: run async test functions")
def pytest_addoption(parser):
parser.addini("asyncio_mode", "asyncio compatibility mode", default="auto")
def pytest_pyfunc_call(pyfuncitem):
"""Minimal asyncio runner for environments without pytest-asyncio."""
if not inspect.iscoroutinefunction(pyfuncitem.obj):
return None
kwargs = {
name: pyfuncitem.funcargs[name]
for name in pyfuncitem._fixtureinfo.argnames
if name in pyfuncitem.funcargs
}
asyncio.run(pyfuncitem.obj(**kwargs))
return True