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()