/
/
/
1"""Fixtures for the Sonos provider tests."""
2
3import asyncio
4import threading
5from collections.abc import AsyncGenerator
6
7import pytest
8from music_assistant_models.enums import CoreState
9
10from music_assistant.mass import MusicAssistant
11
12
13@pytest.fixture
14async def timer_mass() -> AsyncGenerator[MusicAssistant]:
15 """Create a bare MusicAssistant exposing the real task/timer machinery."""
16 mass = object.__new__(MusicAssistant)
17 mass.loop = asyncio.get_running_loop()
18 mass.loop_thread_id = threading.get_ident()
19 mass._tracked_timers = {}
20 mass._tracked_tasks = {}
21 mass._state = CoreState.RUNNING
22 yield mass
23 for handle in mass._tracked_timers.values():
24 handle.cancel()
25 for task in mass._tracked_tasks.values():
26 task.cancel()
27