from contextlib import asynccontextmanager import pytest from utils import make_fake_event @pytest.mark.asyncio async def test_matcher_mutex(): from nonebot.plugins.single_session import matcher_mutex am = asynccontextmanager(matcher_mutex) event = make_fake_event()() event_1 = make_fake_event()() event_2 = make_fake_event(_session_id="test1")() async with am(event) as ctx: assert ctx == False async with am(event) as ctx: async with am(event_1) as ctx_1: assert ctx == False assert ctx_1 == True async with am(event) as ctx: async with am(event_2) as ctx_2: assert ctx == False assert ctx_2 == False