Test whole remote backups through a fake ssh command

Real rsync runs over fake ssh and sshpass scripts that execute the remote side locally, covering --link-dest, removal, key file, password and --remote-sudo without a server.
This commit is contained in:
Fuxino
2026-10-21 22:48:35 +02:00
parent 34e3e41382
commit 4ac8b64085
3 changed files with 130 additions and 22 deletions
+23 -1
View File
@@ -1,7 +1,8 @@
"""Shared fixtures for the simple_backup tests"""
import sys
from collections.abc import Callable
from collections.abc import Callable, Iterator
from datetime import datetime, timedelta
import pytest
@@ -18,6 +19,27 @@ def no_side_effects(monkeypatch: pytest.MonkeyPatch) -> None:
monkeypatch.setattr(sb, '_notify', lambda text: None)
@pytest.fixture
def fake_now(monkeypatch: pytest.MonkeyPatch) -> None:
"""Give each backup a new timestamp, as real runs within the same second would collide"""
def times() -> Iterator[datetime]:
t = datetime(2026, 10, 14, 10, 0, 0)
while True:
yield t
t += timedelta(hours=1)
it = times()
class FakeDatetime:
@staticmethod
def now() -> datetime:
return next(it)
monkeypatch.setattr(sb, 'datetime', FakeDatetime)
@pytest.fixture
def run_cli(monkeypatch: pytest.MonkeyPatch) -> Callable[..., int]:
"""Run simple_backup() with the given command line arguments"""