Pass the bluetooth detection callback to the scanner constructor (#179857)

Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
Paulus Schoutsen
2026-08-22 12:18:20 -05:00
committed by GitHub
co-authored by Claude
parent c48e9d95d1
commit 6b2607a4a3
+21 -16
View File
@@ -2850,9 +2850,10 @@ async def test_wrapped_instance_with_filter(
assert _get_manager() is not None
scanner = HaBleakScannerWrapper(
filters={"UUIDs": ["cba20d00-224d-11e6-9fb8-0002a5d5c51b"]}
filters={"UUIDs": ["cba20d00-224d-11e6-9fb8-0002a5d5c51b"]},
detection_callback=_device_detected,
)
scanner.register_detection_callback(_device_detected)
await scanner.start()
inject_advertisement(hass, switchbot_device, switchbot_adv_2)
await hass.async_block_till_done()
@@ -2862,11 +2863,12 @@ async def test_wrapped_instance_with_filter(
assert discovered == [switchbot_device]
assert len(detected) == 1
scanner.register_detection_callback(_device_detected)
# We should get a reply from the history when we register again
# register_detection_callback is deprecated but still replays the history
with pytest.warns(DeprecationWarning, match="is deprecated"):
scanner.register_detection_callback(_device_detected)
assert len(detected) == 2
scanner.register_detection_callback(_device_detected)
# We should get a reply from the history when we register again
with pytest.warns(DeprecationWarning, match="is deprecated"):
scanner.register_detection_callback(_device_detected)
assert len(detected) == 3
with patch_discovered_devices([]):
@@ -2923,9 +2925,10 @@ async def test_wrapped_instance_with_service_uuids(
assert _get_manager() is not None
scanner = HaBleakScannerWrapper(
service_uuids=["cba20d00-224d-11e6-9fb8-0002a5d5c51b"]
service_uuids=["cba20d00-224d-11e6-9fb8-0002a5d5c51b"],
detection_callback=_device_detected,
)
scanner.register_detection_callback(_device_detected)
await scanner.start()
inject_advertisement(hass, switchbot_device, switchbot_adv)
inject_advertisement(hass, switchbot_device, switchbot_adv_2)
@@ -2983,9 +2986,10 @@ async def test_wrapped_instance_with_service_uuids_with_coro_callback(
assert _get_manager() is not None
scanner = HaBleakScannerWrapper(
service_uuids=["cba20d00-224d-11e6-9fb8-0002a5d5c51b"]
service_uuids=["cba20d00-224d-11e6-9fb8-0002a5d5c51b"],
detection_callback=_device_detected,
)
scanner.register_detection_callback(_device_detected)
await scanner.start()
inject_advertisement(hass, switchbot_device, switchbot_adv)
inject_advertisement(hass, switchbot_device, switchbot_adv_2)
@@ -3037,9 +3041,10 @@ async def test_wrapped_instance_with_broken_callbacks(
assert _get_manager() is not None
scanner = HaBleakScannerWrapper(
service_uuids=["cba20d00-224d-11e6-9fb8-0002a5d5c51b"]
service_uuids=["cba20d00-224d-11e6-9fb8-0002a5d5c51b"],
detection_callback=_device_detected,
)
scanner.register_detection_callback(_device_detected)
await scanner.start()
inject_advertisement(hass, switchbot_device, switchbot_adv)
await hass.async_block_till_done()
@@ -3086,11 +3091,11 @@ async def test_wrapped_instance_changes_uuids(
empty_adv = generate_advertisement_data(local_name="empty")
assert _get_manager() is not None
scanner = HaBleakScannerWrapper()
scanner = HaBleakScannerWrapper(detection_callback=_device_detected)
await scanner.start()
scanner.set_scanning_filter(
service_uuids=["cba20d00-224d-11e6-9fb8-0002a5d5c51b"]
)
scanner.register_detection_callback(_device_detected)
inject_advertisement(hass, switchbot_device, switchbot_adv)
inject_advertisement(hass, switchbot_device, switchbot_adv_2)
@@ -3142,11 +3147,11 @@ async def test_wrapped_instance_changes_filters(
empty_adv = generate_advertisement_data(local_name="empty")
assert _get_manager() is not None
scanner = HaBleakScannerWrapper()
scanner = HaBleakScannerWrapper(detection_callback=_device_detected)
await scanner.start()
scanner.set_scanning_filter(
filters={"UUIDs": ["cba20d00-224d-11e6-9fb8-0002a5d5c51b"]}
)
scanner.register_detection_callback(_device_detected)
inject_advertisement(hass, switchbot_device, switchbot_adv)
inject_advertisement(hass, switchbot_device, switchbot_adv_2)