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:
@@ -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')
|
||||||
|
|
||||||
|
|||||||
@@ -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')
|
||||||
|
|||||||
Reference in New Issue
Block a user