Show elapsed time as (h:)mm:ss and add it to the notification
Replace the timing decorator with a start time kept by Backup.run(), so the final notification can report how long the backup took.
This commit is contained in:
@@ -88,6 +88,18 @@ class TestRsync:
|
||||
assert 'Backup completed' in caplog.text
|
||||
assert 'rsync: sent' in caplog.text
|
||||
|
||||
def test_elapsed_time(self, src: Path, out: Path, monkeypatch: pytest.MonkeyPatch,
|
||||
caplog: pytest.LogCaptureFixture) -> None:
|
||||
notifications: list[str] = []
|
||||
monkeypatch.setattr(sb, '_notify', notifications.append)
|
||||
# Start, then the notification and the log line
|
||||
monkeypatch.setattr(sb, 'default_timer', iter([0.0, 863.187, 863.2]).__next__)
|
||||
|
||||
assert run_backup(out, [str(src)]) == 0
|
||||
|
||||
assert notifications[-1] == 'Backup completed in 14:23'
|
||||
assert 'Elapsed time: 14:23' in caplog.text
|
||||
|
||||
def test_hard_links(self, src: Path, out: Path) -> None:
|
||||
assert run_backup(out, [str(src)]) == 0
|
||||
(src / 'changed.txt').write_text('second')
|
||||
@@ -231,6 +243,13 @@ class TestReadRecords:
|
||||
assert list(sb._read_records(stream)) == ['file', '', 'namé', '�']
|
||||
|
||||
|
||||
@pytest.mark.parametrize(('seconds', 'text'), [
|
||||
(0.4, '00:00'), (59.6, '01:00'), (863.187, '14:23'), (3599.4, '59:59'), (3600, '1:00:00'), (37230, '10:20:30'),
|
||||
])
|
||||
def test_format_duration(seconds: float, text: str) -> None:
|
||||
assert sb._format_duration(seconds) == text
|
||||
|
||||
|
||||
class TestProgressBar:
|
||||
@pytest.fixture(autouse=True)
|
||||
def terminal(self, monkeypatch: pytest.MonkeyPatch) -> None:
|
||||
|
||||
Reference in New Issue
Block a user