From 6b2607a4a327bd9fcc8f6f725411bd78ecba4d40 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 22 Aug 2026 19:18:20 +0200 Subject: [PATCH] Pass the bluetooth detection callback to the scanner constructor (#179857) Co-authored-by: Claude --- tests/components/bluetooth/test_init.py | 37 ++++++++++++++----------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/tests/components/bluetooth/test_init.py b/tests/components/bluetooth/test_init.py index 0bf983ba1db7..cc981aecc0fe 100644 --- a/tests/components/bluetooth/test_init.py +++ b/tests/components/bluetooth/test_init.py @@ -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)