49 lines
1.3 KiB
Python
49 lines
1.3 KiB
Python
"""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
|
|
|
|
import asyncio
|
|
import inspect
|
|
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"]
|
|
|
|
|
|
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
|