Files
Timmy-time-dashboard/tests/unit/test_vassal_house_health.py
Claude (Opus 4.6) 495c1ac2bd
Some checks failed
Tests / lint (push) Has been cancelled
Tests / test (push) Has been cancelled
[claude] Fix 27 ruff lint errors blocking all pushes (#1149) (#1153)
Co-authored-by: Claude (Opus 4.6) <claude@hermes.local>
Co-committed-by: Claude (Opus 4.6) <claude@hermes.local>
2026-03-23 19:06:11 +00:00

116 lines
3.2 KiB
Python

"""Unit tests for timmy.vassal.house_health."""
from __future__ import annotations
import pytest
from timmy.vassal.house_health import (
DiskUsage,
MemoryUsage,
OllamaHealth,
SystemSnapshot,
_probe_disk,
)
# ---------------------------------------------------------------------------
# Data model tests
# ---------------------------------------------------------------------------
def test_system_snapshot_healthy_when_no_warnings():
snap = SystemSnapshot()
assert snap.healthy is True
def test_system_snapshot_unhealthy_with_warnings():
snap = SystemSnapshot(warnings=["disk 90% full"])
assert snap.healthy is False
def test_disk_usage_defaults():
d = DiskUsage()
assert d.percent_used == 0.0
assert d.path == "/"
def test_memory_usage_defaults():
m = MemoryUsage()
assert m.percent_used == 0.0
def test_ollama_health_defaults():
o = OllamaHealth()
assert o.reachable is False
assert o.loaded_models == []
# ---------------------------------------------------------------------------
# _probe_disk — runs against real filesystem
# ---------------------------------------------------------------------------
def test_probe_disk_root():
result = _probe_disk("/")
assert result.total_gb > 0
assert 0.0 <= result.percent_used <= 100.0
assert result.free_gb >= 0
def test_probe_disk_bad_path():
result = _probe_disk("/nonexistent_path_xyz")
# Should not raise — returns zeroed DiskUsage
assert result.percent_used == 0.0
# ---------------------------------------------------------------------------
# get_system_snapshot — async
# ---------------------------------------------------------------------------
@pytest.mark.asyncio
async def test_get_system_snapshot_returns_snapshot():
from timmy.vassal.house_health import get_system_snapshot
snap = await get_system_snapshot()
assert isinstance(snap, SystemSnapshot)
# Disk is always probed
assert snap.disk.total_gb >= 0
# Ollama is likely unreachable in test env — that's fine
assert isinstance(snap.ollama, OllamaHealth)
@pytest.mark.asyncio
async def test_get_system_snapshot_disk_warning(monkeypatch):
"""When disk is above threshold, a warning is generated."""
import timmy.vassal.house_health as hh
# Patch _probe_disk to return high usage
def _full_disk(path: str) -> DiskUsage:
return DiskUsage(
path=path,
total_gb=100.0,
used_gb=90.0,
free_gb=10.0,
percent_used=90.0,
)
monkeypatch.setattr(hh, "_probe_disk", _full_disk)
snap = await hh.get_system_snapshot()
assert any("disk" in w.lower() or "Disk" in w for w in snap.warnings)
# ---------------------------------------------------------------------------
# cleanup_stale_files — temp dir test
# ---------------------------------------------------------------------------
@pytest.mark.asyncio
async def test_cleanup_stale_files_missing_dir():
"""Should not raise when the target dir doesn't exist."""
from timmy.vassal.house_health import cleanup_stale_files
result = await cleanup_stale_files(temp_dirs=["/tmp/timmy_test_xyz_nonexistent"])
assert result["deleted_count"] == 0
assert result["errors"] == []