From 10478f4ca58d57e2c6b3ad0ee1d157cf9f670dd2 Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Fri, 20 Dec 2024 15:19:57 +0100 Subject: [PATCH] Fix logic in backup retention filter (#133654) --- homeassistant/components/backup/config.py | 2 +- tests/components/backup/test_websocket.py | 29 +++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/backup/config.py b/homeassistant/components/backup/config.py index e8d740d2e13..cdecf55848f 100644 --- a/homeassistant/components/backup/config.py +++ b/homeassistant/components/backup/config.py @@ -467,7 +467,7 @@ async def delete_backups_exceeding_configured_count(manager: BackupManager) -> N sorted( backups.items(), key=lambda backup_item: backup_item[1].date, - )[: len(backups) - manager.config.data.retention.copies] + )[: max(len(backups) - manager.config.data.retention.copies, 0)] ) await _delete_filtered_backups(manager, _backups_filter) diff --git a/tests/components/backup/test_websocket.py b/tests/components/backup/test_websocket.py index dfc118577b5..c75fb978082 100644 --- a/tests/components/backup/test_websocket.py +++ b/tests/components/backup/test_websocket.py @@ -1331,6 +1331,35 @@ async def test_config_schedule_logic( 0, [], ), + ( + { + "type": "backup/config/update", + "create_backup": {"agent_ids": ["test.test-agent"]}, + "retention": {"copies": 3, "days": None}, + "schedule": "daily", + }, + { + "backup-1": MagicMock( + date="2024-11-10T04:45:00+01:00", + with_automatic_settings=True, + spec=ManagerBackup, + ), + "backup-2": MagicMock( + date="2024-11-11T04:45:00+01:00", + with_automatic_settings=True, + spec=ManagerBackup, + ), + }, + {}, + {}, + "2024-11-11T04:45:00+01:00", + "2024-11-12T04:45:00+01:00", + "2024-11-12T04:45:00+01:00", + 1, + 1, + 0, + [], + ), ( { "type": "backup/config/update",