from __future__ import annotations
|
|
from datetime import datetime
|
from pathlib import Path
|
import io
|
import json
|
import tempfile
|
import unittest
|
from unittest.mock import patch
|
|
from hibor_fast_collection.cli import main
|
from helpers import task_spec
|
|
|
class CliDryRunTests(unittest.TestCase):
|
def test_dry_run_no_ledger_creation(self):
|
class FixedDateTime(datetime):
|
@classmethod
|
def now(cls, tz=None):
|
return cls(2026, 7, 29, 12, 0, 0, tzinfo=tz)
|
|
with tempfile.TemporaryDirectory() as tmp:
|
root = Path(tmp)
|
(root / "adb.exe").write_bytes(b"tool")
|
(root / "pdfinfo.exe").write_bytes(b"tool")
|
task = root / "task.json"
|
task.write_text(json.dumps(task_spec(root), ensure_ascii=False, separators=(",", ":")), encoding="utf-8")
|
fake_stdout = type("Stdout", (), {"buffer": io.BytesIO()})()
|
with patch("sys.stdout", fake_stdout), patch(
|
"hibor_fast_collection.workflow.datetime", FixedDateTime):
|
code = main(["--task", str(task), "--dry-run"])
|
self.assertEqual(code, 0)
|
self.assertFalse((root / "quota.csv").exists())
|
output = json.loads(fake_stdout.buffer.getvalue())
|
self.assertEqual(output["schema_version"], "HIBOR_FAST_REPORT_COLLECTION_TERMINAL_V009")
|
self.assertEqual(output["quota_cumulative_consumed"], 3)
|
|
|
if __name__ == "__main__": unittest.main()
|