|
1 | 1 | from __future__ import annotations |
2 | 2 |
|
| 3 | +import asyncio |
3 | 4 | from datetime import datetime, timedelta, timezone |
4 | 5 | from logging import getLogger |
5 | 6 | from typing import TYPE_CHECKING, cast |
|
16 | 17 | from crawlee.configuration import Configuration |
17 | 18 | from crawlee.events import LocalEventManager |
18 | 19 | from crawlee.events._types import Event, EventSystemInfoData |
| 20 | +from tests.unit.utils import run_alone_on_mac |
19 | 21 |
|
20 | 22 | if TYPE_CHECKING: |
21 | 23 | from collections.abc import AsyncGenerator |
22 | 24 |
|
23 | 25 |
|
24 | 26 | @pytest.fixture |
25 | 27 | async def event_manager() -> AsyncGenerator[LocalEventManager, None]: |
26 | | - # Use a long interval to avoid interference from periodic system info events during tests |
27 | | - async with LocalEventManager(system_info_interval=timedelta(hours=9999)) as event_manager: |
| 28 | + # Use a long interval to avoid interference from periodic system info events during tests and ensure the first |
| 29 | + # automatic event is consumed before yielding. |
| 30 | + |
| 31 | + event_manager = LocalEventManager(system_info_interval=timedelta(hours=9999)) |
| 32 | + |
| 33 | + initial_system_info_consumed = asyncio.Event() |
| 34 | + |
| 35 | + async def consume_automatic_system_info(_: EventSystemInfoData) -> None: |
| 36 | + initial_system_info_consumed.set() |
| 37 | + |
| 38 | + event_manager.on(event=Event.SYSTEM_INFO, listener=consume_automatic_system_info) |
| 39 | + |
| 40 | + async with event_manager: |
| 41 | + await initial_system_info_consumed.wait() |
| 42 | + event_manager.off(event=Event.SYSTEM_INFO, listener=consume_automatic_system_info) |
| 43 | + |
28 | 44 | yield event_manager |
29 | 45 |
|
30 | 46 |
|
@@ -65,6 +81,7 @@ async def test_start_stop_lifecycle() -> None: |
65 | 81 | pass |
66 | 82 |
|
67 | 83 |
|
| 84 | +@run_alone_on_mac |
68 | 85 | async def test_snapshot_cpu( |
69 | 86 | snapshotter: Snapshotter, event_system_data_info: EventSystemInfoData, event_manager: LocalEventManager |
70 | 87 | ) -> None: |
@@ -197,6 +214,7 @@ async def test_methods_raise_error_when_not_active() -> None: |
197 | 214 | assert snapshotter.active is True |
198 | 215 |
|
199 | 216 |
|
| 217 | +@run_alone_on_mac |
200 | 218 | async def test_snapshot_pruning_removes_outdated_records( |
201 | 219 | snapshotter: Snapshotter, event_manager: LocalEventManager, default_memory_info: MemoryInfo |
202 | 220 | ) -> None: |
|
0 commit comments