31 lines
1.2 KiB
Python
31 lines
1.2 KiB
Python
import json
|
|
import subprocess
|
|
import unittest
|
|
from pathlib import Path
|
|
|
|
ROOT = Path(__file__).resolve().parent
|
|
SCRIPT = ROOT.parent / "roles" / "borg" / "files" / "borg-sentinel-push.py"
|
|
FIXTURE = ROOT / "fixtures" / "borgmatic-info-latest.json"
|
|
|
|
|
|
class SentinelPayloadRegressionTest(unittest.TestCase):
|
|
def test_real_borgmatic_info_shape_produces_nonzero_recent_backup_stats(self):
|
|
proc = subprocess.run(
|
|
["python3", str(SCRIPT), "--host", "pfannkuchen", "--info-file", str(FIXTURE), "--dry-run"],
|
|
text=True,
|
|
capture_output=True,
|
|
)
|
|
self.assertEqual(proc.returncode, 0, proc.stderr)
|
|
payload = json.loads(proc.stdout)
|
|
self.assertEqual(payload["host"], "pfannkuchen")
|
|
self.assertEqual(payload["status"], "ok")
|
|
self.assertEqual(payload["duration_sec"], 7)
|
|
self.assertEqual(payload["original_size"], 573861799)
|
|
self.assertEqual(payload["deduplicated_size"], 189532521)
|
|
self.assertEqual(payload["compressed_size"], 189978004)
|
|
self.assertEqual(payload["nfiles_new"], 157)
|
|
self.assertEqual(payload["archive"], "pfannkuchen-2026-07-29_11-53")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|