40 lines
1.6 KiB
Python
40 lines
1.6 KiB
Python
from __future__ import annotations
|
|
|
|
import tempfile
|
|
import unittest
|
|
from pathlib import Path
|
|
from unittest.mock import patch
|
|
|
|
from src.runtime_bootstrap import compute_nofile_target, ensure_runtime_layout, load_msg_push_exports
|
|
|
|
|
|
class RuntimeBootstrapTests(unittest.TestCase):
|
|
def test_compute_nofile_target_respects_minimum_and_hard_limit(self) -> None:
|
|
self.assertEqual(compute_nofile_target(1024, 524288), 65536)
|
|
self.assertEqual(compute_nofile_target(131072, 65535), 65535)
|
|
|
|
def test_load_msg_push_exports_falls_back_to_noop_when_backup_missing(self) -> None:
|
|
with patch("builtins.__import__", side_effect=ModuleNotFoundError("backup")):
|
|
funcs = load_msg_push_exports()
|
|
self.assertEqual(len(funcs), 7)
|
|
result = funcs[0]("demo")
|
|
self.assertTrue(result["disabled"])
|
|
|
|
def test_ensure_runtime_layout_creates_expected_directories(self) -> None:
|
|
with tempfile.TemporaryDirectory() as tmp:
|
|
issues = ensure_runtime_layout(Path(tmp))
|
|
self.assertEqual(issues, [])
|
|
self.assertTrue((Path(tmp) / "backup_config").is_dir())
|
|
self.assertTrue((Path(tmp) / ".process_runner").is_dir())
|
|
|
|
def test_ensure_runtime_layout_reports_unwritable_directory(self) -> None:
|
|
with tempfile.TemporaryDirectory() as tmp:
|
|
root = Path(tmp)
|
|
with patch("src.runtime_bootstrap.os.access", side_effect=lambda p, mode: str(p) != str(root / "logs")):
|
|
issues = ensure_runtime_layout(root)
|
|
self.assertTrue(any("logs" in issue for issue in issues))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|