1
0
mirror of https://github.com/home-assistant/core.git synced 2026-04-27 20:23:58 +01:00

Update bleak to 1.0.1 (#147742)

Co-authored-by: J. Nick Koston <nick@koston.org>
This commit is contained in:
Marc Mueller
2025-07-13 01:11:37 +02:00
committed by GitHub
parent 5287f4de81
commit fca6dc264f
18 changed files with 121 additions and 142 deletions

View File

@@ -1,11 +1,11 @@
"""Tests for the Bluetooth integration."""
from collections.abc import Iterable
from collections.abc import Generator, Iterable
from contextlib import contextmanager
import itertools
import time
from typing import Any
from unittest.mock import MagicMock, patch
from unittest.mock import MagicMock, PropertyMock, patch
from bleak import BleakClient
from bleak.backends.scanner import AdvertisementData, BLEDevice
@@ -53,7 +53,6 @@ ADVERTISEMENT_DATA_DEFAULTS = {
BLE_DEVICE_DEFAULTS = {
"name": None,
"rssi": -127,
"details": None,
}
@@ -89,7 +88,6 @@ def generate_ble_device(
address: str | None = None,
name: str | None = None,
details: Any | None = None,
rssi: int | None = None,
**kwargs: Any,
) -> BLEDevice:
"""Generate a BLEDevice with defaults."""
@@ -100,8 +98,6 @@ def generate_ble_device(
new["name"] = name
if details is not None:
new["details"] = details
if rssi is not None:
new["rssi"] = rssi
for key, value in BLE_DEVICE_DEFAULTS.items():
new.setdefault(key, value)
return BLEDevice(**new)
@@ -215,34 +211,35 @@ def inject_bluetooth_service_info(
@contextmanager
def patch_all_discovered_devices(mock_discovered: list[BLEDevice]) -> None:
def patch_all_discovered_devices(mock_discovered: list[BLEDevice]) -> Generator[None]:
"""Mock all the discovered devices from all the scanners."""
manager = _get_manager()
original_history = {}
scanners = list(
itertools.chain(
manager._connectable_scanners, manager._non_connectable_scanners
)
)
for scanner in scanners:
data = scanner.discovered_devices_and_advertisement_data
original_history[scanner] = data.copy()
data.clear()
if scanners:
data = scanners[0].discovered_devices_and_advertisement_data
data.clear()
data.update(
{device.address: (device, MagicMock()) for device in mock_discovered}
)
yield
for scanner in scanners:
data = scanner.discovered_devices_and_advertisement_data
data.clear()
data.update(original_history[scanner])
if scanners and getattr(scanners[0], "scanner", None):
with patch.object(
scanners[0].scanner.__class__,
"discovered_devices_and_advertisement_data",
new=PropertyMock(
side_effect=[
{
device.address: (device, MagicMock())
for device in mock_discovered
},
]
+ [{}] * (len(scanners))
),
):
yield
else:
yield
@contextmanager
def patch_discovered_devices(mock_discovered: list[BLEDevice]) -> None:
def patch_discovered_devices(mock_discovered: list[BLEDevice]) -> Generator[None]:
"""Mock the combined best path to discovered devices from all the scanners."""
manager = _get_manager()
original_all_history = manager._all_history
@@ -305,6 +302,9 @@ class MockBleakClient(BleakClient):
"""Mock clear_cache."""
return True
def set_disconnected_callback(self, callback, **kwargs):
"""Mock set_disconnected_callback."""
class FakeScannerMixin:
def get_discovered_device_advertisement_data(