Skip to content

Commit 2350543

Browse files
authored
fix: ensure discovered_devices returns an empty list for offline scanners (#35)
1 parent c8febb9 commit 2350543

File tree

2 files changed

+14
-5
lines changed

2 files changed

+14
-5
lines changed

src/habluetooth/scanner.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import asyncio
55
import logging
66
import platform
7-
from typing import TYPE_CHECKING, Any, Coroutine, Iterable
7+
from typing import Any, Coroutine, Iterable
88

99
import bleak
1010
from bleak import BleakError
@@ -166,17 +166,17 @@ def _create_background_task(self, coro: Coroutine[Any, Any, None]) -> None:
166166
@property
167167
def discovered_devices(self) -> list[BLEDevice]:
168168
"""Return a list of discovered devices."""
169-
if TYPE_CHECKING:
170-
assert self.scanner is not None
169+
if not self.scanner:
170+
return []
171171
return self.scanner.discovered_devices
172172

173173
@property
174174
def discovered_devices_and_advertisement_data(
175175
self,
176176
) -> dict[str, tuple[BLEDevice, AdvertisementData]]:
177177
"""Return a list of discovered devices and advertisement data."""
178-
if TYPE_CHECKING:
179-
assert self.scanner is not None
178+
if not self.scanner:
179+
return {}
180180
return self.scanner.discovered_devices_and_advertisement_data
181181

182182
@property

tests/test_scanner.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,15 @@ def manager():
5555
return manager
5656

5757

58+
@pytest.mark.asyncio
59+
async def test_empty_data_no_scanner() -> None:
60+
"""Test we handle empty data."""
61+
scanner = HaScanner(BluetoothScanningMode.ACTIVE, "hci0", "AA:BB:CC:DD:EE:FF")
62+
scanner.async_setup()
63+
assert scanner.discovered_devices == []
64+
assert scanner.discovered_devices_and_advertisement_data == {}
65+
66+
5867
@pytest.mark.asyncio
5968
@pytest.mark.skipif("platform.system() != 'Linux'")
6069
async def test_dbus_socket_missing_in_container(

0 commit comments

Comments
 (0)