#!/usr/bin/env python3 """Compile actual console implementation with deterministic host RTOS/IO fakes. No target scheduler, socket library, or hardware execution is claimed. """ from pathlib import Path import subprocess import tempfile ROOT = Path(__file__).resolve().parents[2] source = (ROOT / "src/admin_ssh_console.c").read_text() header = (ROOT / "src/admin_ssh_console.h").read_text() def strip_includes(text): return "\n".join(line for line in text.splitlines() if not line.startswith(("#include", "#pragma once"))) with tempfile.TemporaryDirectory(prefix="admin-console-boundary-") as directory: path = Path(directory) unit = ((ROOT / "tests/admin_console_boundary/fakes.h").read_text() + strip_includes(header) + "\n" + strip_includes(source) + (ROOT / "tests/admin_console_boundary/test.c").read_text()) (path / "test.c").write_text(unit) subprocess.run(["cc", "-std=c11", "-Wall", "-Wextra", "-Werror", "-g", str(path / "test.c"), "-o", str(path / "test")], check=True, timeout=30) subprocess.run([str(path / "test")], check=True, timeout=10) ssh = (ROOT / "src/ssh_transport.c").read_text() adapter = ssh[ssh.index("static bool admin_console_drained("): ssh.index("static bool consume_external_close(")] unit = ((ROOT / "tests/admin_console_boundary/fakes.h").read_text() + strip_includes(header) + "\n" + strip_includes(source) + (ROOT / "tests/admin_console_boundary/adapter.c").read_text() + adapter + "\nint main(void) { test_adapter(); }\n") (path / "adapter.c").write_text(unit) subprocess.run(["cc", "-std=c11", "-Wall", "-Wextra", "-Werror", "-Wno-unused-variable", str(path / "adapter.c"), "-o", str(path / "adapter")], check=True, timeout=30) subprocess.run([str(path / "adapter")], check=True, timeout=10)