remove unreachable code
This commit is contained in:
parent
e103204fd8
commit
e0a032c033
|
@ -582,6 +582,11 @@ class APIClient:
|
|||
await connect_future
|
||||
connect_ok = True
|
||||
except asyncio.TimeoutError as err:
|
||||
# If the timeout expires, make sure
|
||||
# to unsub before calling _bluetooth_device_disconnect_guard_timeout
|
||||
# so that the disconnect message is not propagated back to the caller
|
||||
# since we are going to raise a TimeoutAPIError.
|
||||
unsub()
|
||||
timeout_expired = True
|
||||
# Disconnect before raising the exception to ensure
|
||||
# the slot is recovered before the timeout is raised
|
||||
|
@ -600,14 +605,8 @@ class APIClient:
|
|||
f" after {disconnect_timeout}s"
|
||||
) from err
|
||||
finally:
|
||||
if not connect_ok:
|
||||
try:
|
||||
unsub()
|
||||
except (KeyError, ValueError):
|
||||
_LOGGER.warning(
|
||||
"%s: Bluetooth device connection canceled but already unsubscribed",
|
||||
to_human_readable_address(address),
|
||||
)
|
||||
if not connect_ok and not timeout_expired:
|
||||
unsub()
|
||||
if not timeout_expired:
|
||||
timeout_handle.cancel()
|
||||
|
||||
|
|
|
@ -1539,12 +1539,12 @@ async def test_bluetooth_device_connect(
|
|||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_bluetooth_device_connect_times_out(
|
||||
async def test_bluetooth_device_connect_and_disconnect_times_out(
|
||||
api_client: tuple[
|
||||
APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper
|
||||
],
|
||||
) -> None:
|
||||
"""Test bluetooth_device_connect times out."""
|
||||
"""Test bluetooth_device_connect and disconnect times out."""
|
||||
client, connection, transport, protocol = api_client
|
||||
states = []
|
||||
|
||||
|
@ -1565,3 +1565,45 @@ async def test_bluetooth_device_connect_times_out(
|
|||
with pytest.raises(TimeoutAPIError):
|
||||
await connect_task
|
||||
assert states == []
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_bluetooth_device_connect_times_out_disconnect_ok(
|
||||
api_client: tuple[
|
||||
APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper
|
||||
],
|
||||
) -> None:
|
||||
"""Test bluetooth_device_connect and disconnect times out."""
|
||||
client, connection, transport, protocol = api_client
|
||||
states = []
|
||||
|
||||
def on_bluetooth_connection_state(connected: bool, mtu: int, error: int) -> None:
|
||||
states.append((connected, mtu, error))
|
||||
|
||||
connect_task = asyncio.create_task(
|
||||
client.bluetooth_device_connect(
|
||||
1234,
|
||||
on_bluetooth_connection_state,
|
||||
timeout=0,
|
||||
feature_flags=0,
|
||||
has_cache=True,
|
||||
disconnect_timeout=1,
|
||||
address_type=1,
|
||||
)
|
||||
)
|
||||
await asyncio.sleep(0)
|
||||
# The connect request should be written
|
||||
assert len(transport.write.mock_calls) == 1
|
||||
await asyncio.sleep(0)
|
||||
await asyncio.sleep(0)
|
||||
await asyncio.sleep(0)
|
||||
# Now that we timed out, the disconnect
|
||||
# request should be written
|
||||
assert len(transport.write.mock_calls) == 2
|
||||
response: message.Message = BluetoothDeviceConnectionResponse(
|
||||
address=1234, connected=False, mtu=23, error=8
|
||||
)
|
||||
mock_data_received(protocol, generate_plaintext_packet(response))
|
||||
with pytest.raises(TimeoutAPIError):
|
||||
await connect_task
|
||||
assert states == []
|
||||
|
|
Loading…
Reference in New Issue