Add StatsManager for single display

This commit is contained in:
thePR0M3TH3AN
2025-07-31 16:01:40 -04:00
parent a4ddd120c8
commit 6d82ef1815
5 changed files with 76 additions and 3 deletions

View File

@@ -2,6 +2,7 @@ import sys
from types import SimpleNamespace
from pathlib import Path
import pytest
from seedpass.core.stats_manager import StatsManager
sys.path.append(str(Path(__file__).resolve().parents[1]))
@@ -12,6 +13,7 @@ def _make_pm():
return SimpleNamespace(
display_stats=lambda: print("stats"),
start_background_sync=lambda: None,
stats_manager=StatsManager(),
)
@@ -57,3 +59,32 @@ def test_live_stats_triggers_background_sync(monkeypatch):
main._display_live_stats(pm)
assert called["sync"] >= 1
def test_stats_display_only_once(monkeypatch, capsys):
pm = _make_pm()
monkeypatch.setattr(main, "get_notification_text", lambda *_: "")
events = [TimeoutError(), KeyboardInterrupt()]
def fake_input(*_args, **_kwargs):
raise events.pop(0)
monkeypatch.setattr(main, "timed_input", fake_input)
main._display_live_stats(pm, interval=0.01)
out = capsys.readouterr().out
assert out.count("stats") == 1
def test_stats_display_resets_after_exit(monkeypatch, capsys):
pm = _make_pm()
monkeypatch.setattr(main, "get_notification_text", lambda *_: "")
monkeypatch.setattr(
main,
"timed_input",
lambda *_args, **_kwargs: (_ for _ in ()).throw(KeyboardInterrupt()),
)
main._display_live_stats(pm)
main._display_live_stats(pm)
out = capsys.readouterr().out
assert out.count("stats") == 2