Source code for human_requests.pytest_plugin

from __future__ import annotations

import pytest

from ._config import get_start_class_path, register_ini_options
from ._constants import AUTOTEST_TEST_NAME
from ._runtime import _autotest_anyio_runner, run_autotest_tree_anyio, run_autotest_tree_sync


[docs] def pytest_addoption(parser: pytest.Parser) -> None: register_ini_options(parser)
[docs] def pytest_collection_modifyitems( session: pytest.Session, config: pytest.Config, items: list[pytest.Item], ) -> None: if not get_start_class_path(config): return callobj = run_autotest_tree_sync if _has_anyio_plugin(config): callobj = run_autotest_tree_anyio runner_parent = _pick_runner_parent(session=session, items=items) runner = pytest.Function.from_parent( parent=runner_parent, name=AUTOTEST_TEST_NAME, callobj=callobj, ) items.append(runner)
def _has_anyio_plugin(config: pytest.Config) -> bool: return bool(config.pluginmanager.has_plugin("anyio")) def _pick_runner_parent(session: pytest.Session, items: list[pytest.Item]) -> pytest.Collector: for item in items: if isinstance(item, pytest.Function): parent = item.parent if isinstance(parent, pytest.Collector): return parent return session __all__ = [ "pytest_addoption", "pytest_collection_modifyitems", "_autotest_anyio_runner", ]