# 文件内容来源：
#     https://nonebot.dev/docs/best-practice/testing/
# 保证 nonebug 测试框架正常运作

import pytest
import nonebot
from pytest_asyncio import is_async_test
from nonebot.adapters.console import Adapter as ConsoleAdapter
from nonebug import NONEBOT_START_LIFESPAN


def pytest_collection_modifyitems(items: list[pytest.Item]):
    pytest_asyncio_tests = (item for item in items if is_async_test(item))
    session_scope_marker = pytest.mark.asyncio(loop_scope="session")
    for async_test in pytest_asyncio_tests:
        async_test.add_marker(session_scope_marker, append=False)


@pytest.fixture(scope="session", autouse=True)
async def after_nonebot_init(after_nonebot_init: None):
    driver = nonebot.get_driver()
    driver.register_adapter(ConsoleAdapter)

    nonebot.load_from_toml("pyproject.toml")


def pytest_configure(config: pytest.Config):
    config.stash[NONEBOT_START_LIFESPAN] = True
