Reject keep values below -1

A keep below -1 made remove_old_backups() delete every backup, including the new one, and then crash.
This commit is contained in:
Fuxino
2026-10-21 22:16:47 +02:00
parent 85bce54b05
commit 535f7a33fe
2 changed files with 17 additions and 0 deletions
+5
View File
@@ -1082,6 +1082,11 @@ def simple_backup() -> int:
ssh_host = args.ssh_host if args.ssh_host is not None else config_args['ssh_host'] ssh_host = args.ssh_host if args.ssh_host is not None else config_args['ssh_host']
ssh_user = args.ssh_user if args.ssh_user is not None else config_args['ssh_user'] ssh_user = args.ssh_user if args.ssh_user is not None else config_args['ssh_user']
if keep < -1:
logger.critical('Invalid number of backups to keep: %d (use -1 to keep all)', keep)
return 6
if (ssh_host is None) != (ssh_user is None): if (ssh_host is None) != (ssh_user is None):
logger.critical('Both SSH host and SSH user are needed for remote backup') logger.critical('Both SSH host and SSH user are needed for remote backup')
+12
View File
@@ -191,6 +191,18 @@ ssh_keyfile=/keys/id
assert FakeBackup.instances == [] assert FakeBackup.instances == []
assert 'Both SSH host and SSH user are needed' in caplog.text assert 'Both SSH host and SSH user are needed' in caplog.text
@pytest.mark.parametrize('config_keep, argv', [
('keep=-2', []),
('', ['-k', '-2']),
])
def test_keep_below_minus_one(self, run_cli: RunCli, config: Callable[[str], str],
caplog: pytest.LogCaptureFixture, config_keep: str, argv: list[str]) -> None:
config_file = config(f'backup_dir=/backups\n{config_keep}')
assert run_cli('-c', config_file, *argv) == 6
assert FakeBackup.instances == []
assert 'Invalid number of backups to keep: -2' in caplog.text
def test_bad_config(self, run_cli: RunCli, config: Callable[[str], str], def test_bad_config(self, run_cli: RunCli, config: Callable[[str], str],
caplog: pytest.LogCaptureFixture) -> None: caplog: pytest.LogCaptureFixture) -> None:
config_file = config('backup_dir=/backups\nkeep=abc') config_file = config('backup_dir=/backups\nkeep=abc')