local_social_test_support.py (582B)
1 """Scoped HTTP server ownership for the real local-social fixture tests.""" 2 3 from contextlib import contextmanager 4 from http.server import ThreadingHTTPServer 5 from threading import Thread 6 7 8 @contextmanager 9 def blossom_server(handler, state): 10 handler.state = state 11 server = ThreadingHTTPServer(("127.0.0.1", 0), handler) 12 state.blossom_port = server.server_address[1] 13 thread = Thread(target=server.serve_forever, daemon=True) 14 thread.start() 15 try: 16 yield 17 finally: 18 server.shutdown() 19 server.server_close() 20 thread.join(timeout=5)