"""Minimal threaded HTTP server for diff-remote / verify-public tests.""" from __future__ import annotations import contextlib import threading from http.server import SimpleHTTPRequestHandler, ThreadingHTTPServer from pathlib import Path from typing import Iterator class _Handler(SimpleHTTPRequestHandler): def log_message(self, format, *args): # noqa: A002 pass # silence @contextlib.contextmanager def serve_dir(root: Path) -> Iterator[str]: """Serve `root` on 127.0.0.1:, yield the base URL.""" handler = lambda *a, **kw: _Handler(*a, directory=str(root), **kw) # noqa: E731 server = ThreadingHTTPServer(("127.0.0.1", 0), handler) thread = threading.Thread(target=server.serve_forever, daemon=True) thread.start() try: yield f"http://127.0.0.1:{server.server_port}" finally: server.shutdown() server.server_close() thread.join(timeout=2)