mirror of
https://github.com/home-assistant/core.git
synced 2025-08-08 07:05:07 +02:00
fixes
This commit is contained in:
@@ -22,6 +22,8 @@ from bluetooth_adapters import (
|
|||||||
get_adapters,
|
get_adapters,
|
||||||
)
|
)
|
||||||
from habluetooth import (
|
from habluetooth import (
|
||||||
|
BaseHaScanner,
|
||||||
|
BluetoothScannerDevice,
|
||||||
BluetoothScanningMode,
|
BluetoothScanningMode,
|
||||||
HaBluetoothConnector,
|
HaBluetoothConnector,
|
||||||
HaScanner,
|
HaScanner,
|
||||||
@@ -66,11 +68,7 @@ from .api import (
|
|||||||
async_set_fallback_availability_interval,
|
async_set_fallback_availability_interval,
|
||||||
async_track_unavailable,
|
async_track_unavailable,
|
||||||
)
|
)
|
||||||
from .base_scanner import (
|
from .base_scanner import HomeAssistantRemoteScanner
|
||||||
BaseHaScanner,
|
|
||||||
BluetoothScannerDevice,
|
|
||||||
HomeAssistantRemoteScanner,
|
|
||||||
)
|
|
||||||
from .const import (
|
from .const import (
|
||||||
BLUETOOTH_DISCOVERY_COOLDOWN_SECONDS,
|
BLUETOOTH_DISCOVERY_COOLDOWN_SECONDS,
|
||||||
CONF_ADAPTER,
|
CONF_ADAPTER,
|
||||||
|
@@ -8,8 +8,7 @@ from typing import Final
|
|||||||
|
|
||||||
from bleak_retry_connector import BleakSlotManager
|
from bleak_retry_connector import BleakSlotManager
|
||||||
from bluetooth_adapters import BluetoothAdapters
|
from bluetooth_adapters import BluetoothAdapters
|
||||||
from bluetooth_data_tools import monotonic_time_coarse
|
from habluetooth import BluetoothManager, manager
|
||||||
from habluetooth import BluetoothManager
|
|
||||||
|
|
||||||
from homeassistant import config_entries
|
from homeassistant import config_entries
|
||||||
from homeassistant.const import EVENT_LOGGING_CHANGED
|
from homeassistant.const import EVENT_LOGGING_CHANGED
|
||||||
@@ -35,7 +34,7 @@ from .models import BluetoothCallback, BluetoothChange, BluetoothServiceInfoBlea
|
|||||||
from .storage import BluetoothStorage
|
from .storage import BluetoothStorage
|
||||||
from .util import async_load_history_from_system
|
from .util import async_load_history_from_system
|
||||||
|
|
||||||
MONOTONIC_TIME: Final = monotonic_time_coarse
|
MONOTONIC_TIME: Final = manager.MONOTONIC_TIME
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
@@ -10,6 +10,7 @@ from unittest.mock import MagicMock
|
|||||||
from bleak import BleakClient
|
from bleak import BleakClient
|
||||||
from bleak.backends.scanner import AdvertisementData, BLEDevice
|
from bleak.backends.scanner import AdvertisementData, BLEDevice
|
||||||
from bluetooth_adapters import DEFAULT_ADDRESS
|
from bluetooth_adapters import DEFAULT_ADDRESS
|
||||||
|
from habluetooth import BaseHaScanner, BluetoothManager
|
||||||
|
|
||||||
from homeassistant.components.bluetooth import (
|
from homeassistant.components.bluetooth import (
|
||||||
DOMAIN,
|
DOMAIN,
|
||||||
@@ -19,8 +20,6 @@ from homeassistant.components.bluetooth import (
|
|||||||
async_get_advertisement_callback,
|
async_get_advertisement_callback,
|
||||||
models,
|
models,
|
||||||
)
|
)
|
||||||
from homeassistant.components.bluetooth.base_scanner import BaseHaScanner
|
|
||||||
from homeassistant.components.bluetooth.manager import BluetoothManager
|
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.setup import async_setup_component
|
from homeassistant.setup import async_setup_component
|
||||||
|
|
||||||
|
@@ -8,6 +8,7 @@ from bleak import BleakError
|
|||||||
from bleak.backends.scanner import AdvertisementData, BLEDevice
|
from bleak.backends.scanner import AdvertisementData, BLEDevice
|
||||||
from bluetooth_adapters import DEFAULT_ADDRESS
|
from bluetooth_adapters import DEFAULT_ADDRESS
|
||||||
from habluetooth import scanner
|
from habluetooth import scanner
|
||||||
|
from habluetooth.wrappers import HaBleakScannerWrapper
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from homeassistant.components import bluetooth
|
from homeassistant.components import bluetooth
|
||||||
@@ -35,7 +36,6 @@ from homeassistant.components.bluetooth.match import (
|
|||||||
SERVICE_DATA_UUID,
|
SERVICE_DATA_UUID,
|
||||||
SERVICE_UUID,
|
SERVICE_UUID,
|
||||||
)
|
)
|
||||||
from homeassistant.components.bluetooth.wrappers import HaBleakScannerWrapper
|
|
||||||
from homeassistant.config_entries import ConfigEntryState
|
from homeassistant.config_entries import ConfigEntryState
|
||||||
from homeassistant.const import EVENT_HOMEASSISTANT_STARTED, EVENT_HOMEASSISTANT_STOP
|
from homeassistant.const import EVENT_HOMEASSISTANT_STARTED, EVENT_HOMEASSISTANT_STOP
|
||||||
from homeassistant.core import HomeAssistant, callback
|
from homeassistant.core import HomeAssistant, callback
|
||||||
|
@@ -7,6 +7,7 @@ from unittest.mock import patch
|
|||||||
|
|
||||||
from bleak.backends.scanner import AdvertisementData, BLEDevice
|
from bleak.backends.scanner import AdvertisementData, BLEDevice
|
||||||
from bluetooth_adapters import AdvertisementHistory
|
from bluetooth_adapters import AdvertisementHistory
|
||||||
|
from habluetooth.manager import FALLBACK_MAXIMUM_STALE_ADVERTISEMENT_SECONDS
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from homeassistant.components import bluetooth
|
from homeassistant.components import bluetooth
|
||||||
@@ -31,9 +32,6 @@ from homeassistant.components.bluetooth.const import (
|
|||||||
SOURCE_LOCAL,
|
SOURCE_LOCAL,
|
||||||
UNAVAILABLE_TRACK_SECONDS,
|
UNAVAILABLE_TRACK_SECONDS,
|
||||||
)
|
)
|
||||||
from homeassistant.components.bluetooth.manager import (
|
|
||||||
FALLBACK_MAXIMUM_STALE_ADVERTISEMENT_SECONDS,
|
|
||||||
)
|
|
||||||
from homeassistant.core import HomeAssistant, callback
|
from homeassistant.core import HomeAssistant, callback
|
||||||
from homeassistant.setup import async_setup_component
|
from homeassistant.setup import async_setup_component
|
||||||
from homeassistant.util import dt as dt_util
|
from homeassistant.util import dt as dt_util
|
||||||
|
@@ -7,6 +7,7 @@ import bleak
|
|||||||
from bleak import BleakError
|
from bleak import BleakError
|
||||||
from bleak.backends.device import BLEDevice
|
from bleak.backends.device import BLEDevice
|
||||||
from bleak.backends.scanner import AdvertisementData
|
from bleak.backends.scanner import AdvertisementData
|
||||||
|
from habluetooth.wrappers import HaBleakClientWrapper, HaBleakScannerWrapper
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from homeassistant.components.bluetooth import (
|
from homeassistant.components.bluetooth import (
|
||||||
@@ -14,10 +15,6 @@ from homeassistant.components.bluetooth import (
|
|||||||
HaBluetoothConnector,
|
HaBluetoothConnector,
|
||||||
HomeAssistantRemoteScanner,
|
HomeAssistantRemoteScanner,
|
||||||
)
|
)
|
||||||
from homeassistant.components.bluetooth.wrappers import (
|
|
||||||
HaBleakClientWrapper,
|
|
||||||
HaBleakScannerWrapper,
|
|
||||||
)
|
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
|
|
||||||
from . import (
|
from . import (
|
||||||
|
@@ -2,17 +2,12 @@
|
|||||||
from unittest.mock import patch
|
from unittest.mock import patch
|
||||||
|
|
||||||
import bleak
|
import bleak
|
||||||
import bleak_retry_connector
|
from habluetooth.usage import (
|
||||||
import pytest
|
|
||||||
|
|
||||||
from homeassistant.components.bluetooth.usage import (
|
|
||||||
install_multiple_bleak_catcher,
|
install_multiple_bleak_catcher,
|
||||||
uninstall_multiple_bleak_catcher,
|
uninstall_multiple_bleak_catcher,
|
||||||
)
|
)
|
||||||
from homeassistant.components.bluetooth.wrappers import (
|
from habluetooth.wrappers import HaBleakClientWrapper, HaBleakScannerWrapper
|
||||||
HaBleakClientWrapper,
|
|
||||||
HaBleakScannerWrapper,
|
|
||||||
)
|
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
|
|
||||||
from . import generate_ble_device
|
from . import generate_ble_device
|
||||||
@@ -57,47 +52,3 @@ async def test_wrapping_bleak_client(
|
|||||||
instance = bleak.BleakClient(MOCK_BLE_DEVICE)
|
instance = bleak.BleakClient(MOCK_BLE_DEVICE)
|
||||||
|
|
||||||
assert not isinstance(instance, HaBleakClientWrapper)
|
assert not isinstance(instance, HaBleakClientWrapper)
|
||||||
|
|
||||||
|
|
||||||
async def test_bleak_client_reports_with_address(
|
|
||||||
hass: HomeAssistant, enable_bluetooth: None, caplog: pytest.LogCaptureFixture
|
|
||||||
) -> None:
|
|
||||||
"""Test we report when we pass an address to BleakClient."""
|
|
||||||
install_multiple_bleak_catcher()
|
|
||||||
|
|
||||||
instance = bleak.BleakClient("00:00:00:00:00:00")
|
|
||||||
|
|
||||||
assert "BleakClient with an address instead of a BLEDevice" in caplog.text
|
|
||||||
|
|
||||||
assert isinstance(instance, HaBleakClientWrapper)
|
|
||||||
|
|
||||||
uninstall_multiple_bleak_catcher()
|
|
||||||
|
|
||||||
caplog.clear()
|
|
||||||
|
|
||||||
instance = bleak.BleakClient("00:00:00:00:00:00")
|
|
||||||
|
|
||||||
assert not isinstance(instance, HaBleakClientWrapper)
|
|
||||||
assert "BleakClient with an address instead of a BLEDevice" not in caplog.text
|
|
||||||
|
|
||||||
|
|
||||||
async def test_bleak_retry_connector_client_reports_with_address(
|
|
||||||
hass: HomeAssistant, enable_bluetooth: None, caplog: pytest.LogCaptureFixture
|
|
||||||
) -> None:
|
|
||||||
"""Test we report when we pass an address to BleakClientWithServiceCache."""
|
|
||||||
install_multiple_bleak_catcher()
|
|
||||||
|
|
||||||
instance = bleak_retry_connector.BleakClientWithServiceCache("00:00:00:00:00:00")
|
|
||||||
|
|
||||||
assert "BleakClient with an address instead of a BLEDevice" in caplog.text
|
|
||||||
|
|
||||||
assert isinstance(instance, HaBleakClientWrapper)
|
|
||||||
|
|
||||||
uninstall_multiple_bleak_catcher()
|
|
||||||
|
|
||||||
caplog.clear()
|
|
||||||
|
|
||||||
instance = bleak_retry_connector.BleakClientWithServiceCache("00:00:00:00:00:00")
|
|
||||||
|
|
||||||
assert not isinstance(instance, HaBleakClientWrapper)
|
|
||||||
assert "BleakClient with an address instead of a BLEDevice" not in caplog.text
|
|
||||||
|
@@ -8,6 +8,10 @@ import bleak
|
|||||||
from bleak.backends.device import BLEDevice
|
from bleak.backends.device import BLEDevice
|
||||||
from bleak.backends.scanner import AdvertisementData
|
from bleak.backends.scanner import AdvertisementData
|
||||||
from bleak.exc import BleakError
|
from bleak.exc import BleakError
|
||||||
|
from habluetooth.usage import (
|
||||||
|
install_multiple_bleak_catcher,
|
||||||
|
uninstall_multiple_bleak_catcher,
|
||||||
|
)
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from homeassistant.components.bluetooth import (
|
from homeassistant.components.bluetooth import (
|
||||||
@@ -17,10 +21,6 @@ from homeassistant.components.bluetooth import (
|
|||||||
HomeAssistantRemoteScanner,
|
HomeAssistantRemoteScanner,
|
||||||
async_get_advertisement_callback,
|
async_get_advertisement_callback,
|
||||||
)
|
)
|
||||||
from homeassistant.components.bluetooth.usage import (
|
|
||||||
install_multiple_bleak_catcher,
|
|
||||||
uninstall_multiple_bleak_catcher,
|
|
||||||
)
|
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
|
|
||||||
from . import _get_manager, generate_advertisement_data, generate_ble_device
|
from . import _get_manager, generate_advertisement_data, generate_ble_device
|
||||||
@@ -133,7 +133,7 @@ def install_bleak_catcher_fixture():
|
|||||||
def mock_platform_client_fixture():
|
def mock_platform_client_fixture():
|
||||||
"""Fixture that mocks the platform client."""
|
"""Fixture that mocks the platform client."""
|
||||||
with patch(
|
with patch(
|
||||||
"homeassistant.components.bluetooth.wrappers.get_platform_client_backend_type",
|
"habluetooth.wrappers.get_platform_client_backend_type",
|
||||||
return_value=FakeBleakClient,
|
return_value=FakeBleakClient,
|
||||||
):
|
):
|
||||||
yield
|
yield
|
||||||
@@ -143,7 +143,7 @@ def mock_platform_client_fixture():
|
|||||||
def mock_platform_client_that_fails_to_connect_fixture():
|
def mock_platform_client_that_fails_to_connect_fixture():
|
||||||
"""Fixture that mocks the platform client that fails to connect."""
|
"""Fixture that mocks the platform client that fails to connect."""
|
||||||
with patch(
|
with patch(
|
||||||
"homeassistant.components.bluetooth.wrappers.get_platform_client_backend_type",
|
"habluetooth.wrappers.get_platform_client_backend_type",
|
||||||
return_value=FakeBleakClientFailsToConnect,
|
return_value=FakeBleakClientFailsToConnect,
|
||||||
):
|
):
|
||||||
yield
|
yield
|
||||||
@@ -153,7 +153,7 @@ def mock_platform_client_that_fails_to_connect_fixture():
|
|||||||
def mock_platform_client_that_raises_on_connect_fixture():
|
def mock_platform_client_that_raises_on_connect_fixture():
|
||||||
"""Fixture that mocks the platform client that fails to connect."""
|
"""Fixture that mocks the platform client that fails to connect."""
|
||||||
with patch(
|
with patch(
|
||||||
"homeassistant.components.bluetooth.wrappers.get_platform_client_backend_type",
|
"habluetooth.wrappers.get_platform_client_backend_type",
|
||||||
return_value=FakeBleakClientRaisesOnConnect,
|
return_value=FakeBleakClientRaisesOnConnect,
|
||||||
):
|
):
|
||||||
yield
|
yield
|
||||||
@@ -332,27 +332,27 @@ async def test_we_switch_adapters_on_failure(
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
with patch(
|
with patch(
|
||||||
"homeassistant.components.bluetooth.wrappers.get_platform_client_backend_type",
|
"habluetooth.wrappers.get_platform_client_backend_type",
|
||||||
return_value=FakeBleakClientFailsHCI0Only,
|
return_value=FakeBleakClientFailsHCI0Only,
|
||||||
):
|
):
|
||||||
assert await client.connect() is False
|
assert await client.connect() is False
|
||||||
|
|
||||||
with patch(
|
with patch(
|
||||||
"homeassistant.components.bluetooth.wrappers.get_platform_client_backend_type",
|
"habluetooth.wrappers.get_platform_client_backend_type",
|
||||||
return_value=FakeBleakClientFailsHCI0Only,
|
return_value=FakeBleakClientFailsHCI0Only,
|
||||||
):
|
):
|
||||||
assert await client.connect() is False
|
assert await client.connect() is False
|
||||||
|
|
||||||
# After two tries we should switch to hci1
|
# After two tries we should switch to hci1
|
||||||
with patch(
|
with patch(
|
||||||
"homeassistant.components.bluetooth.wrappers.get_platform_client_backend_type",
|
"habluetooth.wrappers.get_platform_client_backend_type",
|
||||||
return_value=FakeBleakClientFailsHCI0Only,
|
return_value=FakeBleakClientFailsHCI0Only,
|
||||||
):
|
):
|
||||||
assert await client.connect() is True
|
assert await client.connect() is True
|
||||||
|
|
||||||
# ..and we remember that hci1 works as long as the client doesn't change
|
# ..and we remember that hci1 works as long as the client doesn't change
|
||||||
with patch(
|
with patch(
|
||||||
"homeassistant.components.bluetooth.wrappers.get_platform_client_backend_type",
|
"habluetooth.wrappers.get_platform_client_backend_type",
|
||||||
return_value=FakeBleakClientFailsHCI0Only,
|
return_value=FakeBleakClientFailsHCI0Only,
|
||||||
):
|
):
|
||||||
assert await client.connect() is True
|
assert await client.connect() is True
|
||||||
@@ -361,7 +361,7 @@ async def test_we_switch_adapters_on_failure(
|
|||||||
client = bleak.BleakClient(ble_device)
|
client = bleak.BleakClient(ble_device)
|
||||||
|
|
||||||
with patch(
|
with patch(
|
||||||
"homeassistant.components.bluetooth.wrappers.get_platform_client_backend_type",
|
"habluetooth.wrappers.get_platform_client_backend_type",
|
||||||
return_value=FakeBleakClientFailsHCI0Only,
|
return_value=FakeBleakClientFailsHCI0Only,
|
||||||
):
|
):
|
||||||
assert await client.connect() is False
|
assert await client.connect() is False
|
||||||
|
Reference in New Issue
Block a user