Skip to content

Commit 5ac7749

Browse files
committed
Ruff
1 parent b8b8663 commit 5ac7749

File tree

3 files changed

+43
-23
lines changed

3 files changed

+43
-23
lines changed

airos/discovery.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,9 @@ def _async_airos_device_found(device_info: dict[str, Any]) -> None:
289289
mac_address = device_info.get("mac_address")
290290
if mac_address:
291291
discovered_devices[mac_address] = device_info
292-
_LOGGER.debug("Discovered device: %s", device_info.get("hostname", mac_address))
292+
_LOGGER.debug(
293+
"Discovered device: %s", device_info.get("hostname", mac_address)
294+
)
293295

294296
transport: asyncio.DatagramTransport | None = None
295297
try:

tests/conftest.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
"""Ubiquity AirOS test fixtures."""
22

3+
import asyncio
34
from unittest.mock import AsyncMock, MagicMock, patch
5+
46
from airos.airos8 import AirOS
57
from airos.discovery import AirOSDiscoveryProtocol
68
import pytest
79

810
import aiohttp
9-
import asyncio
1011

1112

1213
@pytest.fixture
@@ -36,10 +37,12 @@ def mock_datagram_endpoint():
3637
return_value=(mock_transport, mock_protocol_instance)
3738
)
3839

39-
with patch(
40-
"asyncio.get_running_loop"
41-
) as mock_get_loop, patch(
42-
"airos.discovery.AirOSDiscoveryProtocol", new=MagicMock(return_value=mock_protocol_instance)
40+
with (
41+
patch("asyncio.get_running_loop") as mock_get_loop,
42+
patch(
43+
"airos.discovery.AirOSDiscoveryProtocol",
44+
new=MagicMock(return_value=mock_protocol_instance),
45+
),
4346
):
4447
mock_loop = mock_get_loop.return_value
4548
mock_loop.create_datagram_endpoint = mock_create_datagram_endpoint

tests/test_discovery.py

Lines changed: 32 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,11 @@
55
import socket # Add this import
66
from unittest.mock import AsyncMock, MagicMock, patch
77

8-
from airos.discovery import DISCOVERY_PORT, AirOSDiscoveryProtocol, async_discover_devices
8+
from airos.discovery import (
9+
DISCOVERY_PORT,
10+
AirOSDiscoveryProtocol,
11+
async_discover_devices,
12+
)
913
from airos.exceptions import AirOSDiscoveryError, AirOSEndpointError, AirOSListenerError
1014
import pytest
1115

@@ -206,10 +210,14 @@ async def test_error_received():
206210
f"UDP error received in AirOSDiscoveryProtocol: {test_exception}"
207211
)
208212

213+
209214
# Front-end discovery tests
210215

216+
211217
@pytest.mark.asyncio
212-
async def test_async_discover_devices_success(mock_airos_packet, mock_datagram_endpoint):
218+
async def test_async_discover_devices_success(
219+
mock_airos_packet, mock_datagram_endpoint
220+
):
213221
"""Test the high-level discovery function on a successful run."""
214222
mock_transport, mock_protocol_instance = mock_datagram_endpoint
215223

@@ -224,13 +232,16 @@ def inner_callback(device_info):
224232
return MagicMock(callback=inner_callback)
225233

226234
with patch(
227-
"airos.discovery.AirOSDiscoveryProtocol", new=MagicMock(side_effect=mock_protocol_factory)
235+
"airos.discovery.AirOSDiscoveryProtocol",
236+
new=MagicMock(side_effect=mock_protocol_factory),
228237
):
229238

230239
async def _simulate_discovery():
231240
await asyncio.sleep(0.1)
232241

233-
protocol = AirOSDiscoveryProtocol(MagicMock()) # Create a real protocol instance just for parsing
242+
protocol = AirOSDiscoveryProtocol(
243+
MagicMock()
244+
) # Create a real protocol instance just for parsing
234245
parsed_data = protocol.parse_airos_packet(mock_airos_packet, "192.168.1.3")
235246

236247
mock_protocol_factory(MagicMock()).callback(parsed_data)
@@ -251,10 +262,10 @@ async def _simulate_discovery():
251262
async def test_async_discover_devices_no_devices(mock_datagram_endpoint):
252263
"""Test discovery returns an empty dict if no devices are found."""
253264
mock_transport, _ = mock_datagram_endpoint
254-
265+
255266
with patch("asyncio.sleep", new=AsyncMock()):
256267
result = await async_discover_devices(timeout=1)
257-
268+
258269
assert result == {}
259270
mock_transport.close.assert_called_once()
260271

@@ -263,13 +274,16 @@ async def test_async_discover_devices_no_devices(mock_datagram_endpoint):
263274
async def test_async_discover_devices_oserror(mock_datagram_endpoint):
264275
"""Test discovery handles OSError during endpoint creation."""
265276
mock_transport, _ = mock_datagram_endpoint
266-
267-
with patch(
268-
"asyncio.get_running_loop"
269-
) as mock_get_loop, pytest.raises(AirOSEndpointError) as excinfo:
277+
278+
with (
279+
patch("asyncio.get_running_loop") as mock_get_loop,
280+
pytest.raises(AirOSEndpointError) as excinfo,
281+
):
270282
mock_loop = mock_get_loop.return_value
271-
mock_loop.create_datagram_endpoint = AsyncMock(side_effect=OSError(98, "Address in use"))
272-
283+
mock_loop.create_datagram_endpoint = AsyncMock(
284+
side_effect=OSError(98, "Address in use")
285+
)
286+
273287
await async_discover_devices(timeout=1)
274288

275289
assert "address_in_use" in str(excinfo.value)
@@ -280,12 +294,13 @@ async def test_async_discover_devices_oserror(mock_datagram_endpoint):
280294
async def test_async_discover_devices_cancelled(mock_datagram_endpoint):
281295
"""Test discovery handles CancelledError during the timeout."""
282296
mock_transport, _ = mock_datagram_endpoint
283-
297+
284298
# Patch asyncio.sleep to immediately raise CancelledError
285-
with patch(
286-
"asyncio.sleep", new=AsyncMock(side_effect=asyncio.CancelledError)
287-
), pytest.raises(AirOSListenerError) as excinfo:
299+
with (
300+
patch("asyncio.sleep", new=AsyncMock(side_effect=asyncio.CancelledError)),
301+
pytest.raises(AirOSListenerError) as excinfo,
302+
):
288303
await async_discover_devices(timeout=1)
289-
304+
290305
assert "cannot_connect" in str(excinfo.value)
291306
mock_transport.close.assert_called_once()

0 commit comments

Comments
 (0)