33from collections .abc import (
44 AsyncGenerator ,
55 AsyncIterator ,
6+ Buffer ,
67 Callable ,
78 Coroutine ,
89 Generator ,
1314from io import StringIO
1415import os
1516from pathlib import PurePath
16- from typing import Any
17+ from typing import Any , cast
1718from unittest .mock import ANY , AsyncMock , Mock , patch
1819from uuid import UUID
1920
@@ -341,15 +342,15 @@ def mock_backup_agent(
341342
342343 async def delete_backup (backup_id : str , ** kwargs : Any ) -> None :
343344 """Mock delete."""
344- get_backup (backup_id )
345+ await get_backup (backup_id )
345346
346347 async def download_backup (backup_id : str , ** kwargs : Any ) -> AsyncIterator [bytes ]:
347348 """Mock download."""
348349 return aiter_from_iter ((backups_data .get (backup_id , b"backup data" ),))
349350
350351 async def get_backup (backup_id : str , ** kwargs : Any ) -> AgentBackup :
351352 """Get a backup."""
352- backup = next ((b for b in backups if b .backup_id == backup_id ), None )
353+ backup = next ((b for b in _backups if b .backup_id == backup_id ), None )
353354 if backup is None :
354355 raise BackupNotFound
355356 return backup
@@ -361,15 +362,15 @@ async def upload_backup(
361362 ** kwargs : Any ,
362363 ) -> None :
363364 """Upload a backup."""
364- backups .append (backup )
365+ _backups .append (backup )
365366 backup_stream = await open_stream ()
366367 backup_data = bytearray ()
367368 async for chunk in backup_stream :
368369 backup_data += chunk
369370 backups_data [backup .backup_id ] = backup_data
370371
371- backups = backups or []
372- backups_data : dict [str , bytes ] = {}
372+ _backups = backups or []
373+ backups_data : dict [str , Buffer ] = {}
373374 mock_agent = Mock (spec = BackupAgent )
374375 mock_agent .domain = domain
375376 mock_agent .name = name
@@ -401,7 +402,7 @@ async def _setup_backup_platform(
401402 platform : BackupAgentPlatformProtocol ,
402403) -> None :
403404 """Set up a mock domain."""
404- mock_platform (hass , f"{ domain } .backup" , platform )
405+ mock_platform (hass , f"{ domain } .backup" , cast ( Mock , platform ) )
405406 assert await async_setup_component (hass , domain , {})
406407 await hass .async_block_till_done ()
407408
@@ -423,7 +424,7 @@ async def _setup_backup_platform(
423424 name = "test" ,
424425 read_only = False ,
425426 state = supervisor_mounts .MountState .ACTIVE ,
426- user_path = "test" ,
427+ user_path = PurePath ( "test" ) ,
427428 usage = supervisor_mounts .MountUsage .BACKUP ,
428429 server = "test" ,
429430 type = supervisor_mounts .MountType .CIFS ,
@@ -441,7 +442,7 @@ async def _setup_backup_platform(
441442 name = "test" ,
442443 read_only = False ,
443444 state = supervisor_mounts .MountState .ACTIVE ,
444- user_path = "test" ,
445+ user_path = PurePath ( "test" ) ,
445446 usage = supervisor_mounts .MountUsage .MEDIA ,
446447 server = "test" ,
447448 type = supervisor_mounts .MountType .CIFS ,
@@ -854,7 +855,7 @@ async def test_agents_notify_on_mount_added_removed(
854855 "with_automatic_settings" : False ,
855856 },
856857 filename = PurePath ("Test_2025-01-30_05.42_12345678.tar" ),
857- folders = {"ssl" },
858+ folders = {supervisor_backups . Folder ( "ssl" ) },
858859 homeassistant_exclude_database = False ,
859860 homeassistant = True ,
860861 location = [LOCATION_LOCAL_STORAGE ],
@@ -877,15 +878,22 @@ async def test_agents_notify_on_mount_added_removed(
877878 ),
878879 (
879880 {"include_all_addons" : True },
880- replace (DEFAULT_BACKUP_OPTIONS , addons = "ALL" ),
881+ replace (DEFAULT_BACKUP_OPTIONS , addons = supervisor_backups . AddonSet ( "ALL" ) ),
881882 ),
882883 (
883884 {"include_database" : False },
884885 replace (DEFAULT_BACKUP_OPTIONS , homeassistant_exclude_database = True ),
885886 ),
886887 (
887888 {"include_folders" : ["media" , "share" ]},
888- replace (DEFAULT_BACKUP_OPTIONS , folders = {"media" , "share" , "ssl" }),
889+ replace (
890+ DEFAULT_BACKUP_OPTIONS ,
891+ folders = {
892+ supervisor_backups .Folder ("media" ),
893+ supervisor_backups .Folder ("share" ),
894+ supervisor_backups .Folder ("ssl" ),
895+ },
896+ ),
889897 ),
890898 (
891899 {
@@ -895,7 +903,7 @@ async def test_agents_notify_on_mount_added_removed(
895903 },
896904 replace (
897905 DEFAULT_BACKUP_OPTIONS ,
898- folders = {"media" },
906+ folders = {supervisor_backups . Folder ( "media" ) },
899907 homeassistant = False ,
900908 homeassistant_exclude_database = True ,
901909 ),
@@ -1251,11 +1259,11 @@ async def test_reader_writer_create_per_agent_encryption(
12511259 hass_ws_client : WebSocketGenerator ,
12521260 freezer : FrozenDateTimeFactory ,
12531261 supervisor_client : AsyncMock ,
1254- commands : dict [str , Any ],
1262+ commands : list [ dict [str , Any ] ],
12551263 password : str | None ,
12561264 agent_ids : list [str ],
12571265 password_sent_to_supervisor : str | None ,
1258- create_locations : list [str | None ],
1266+ create_locations : list [str ],
12591267 create_protected : bool ,
12601268 upload_locations : list [str | None ],
12611269) -> None :
@@ -1270,7 +1278,7 @@ async def test_reader_writer_create_per_agent_encryption(
12701278 name = f"share{ i } " ,
12711279 read_only = False ,
12721280 state = supervisor_mounts .MountState .ACTIVE ,
1273- user_path = f"share{ i } " ,
1281+ user_path = PurePath ( f"share{ i } " ) ,
12741282 usage = supervisor_mounts .MountUsage .BACKUP ,
12751283 server = f"share{ i } " ,
12761284 type = supervisor_mounts .MountType .CIFS ,
@@ -1996,7 +2004,7 @@ async def test_reader_writer_restore_remote_backup(
19962004 homeassistant_version = "2024.12.0" ,
19972005 name = "Test" ,
19982006 protected = False ,
1999- size = 0.0 ,
2007+ size = 0 ,
20002008 )
20012009 remote_agent = mock_backup_agent ("remote" , backups = [test_backup ])
20022010 await _setup_backup_platform (
@@ -2626,7 +2634,7 @@ async def test_config_load_config_info(
26262634 freezer : FrozenDateTimeFactory ,
26272635 snapshot : SnapshotAssertion ,
26282636 hass_storage : dict [str , Any ],
2629- storage_data : dict [str , Any ] | None ,
2637+ storage_data : dict [str , Any ],
26302638) -> None :
26312639 """Test loading stored backup config and reading it via config/info."""
26322640 client = await hass_ws_client (hass )
0 commit comments