from services.editor import python_lsp def test_encode_message(): message = '{"jsonrpc":"2.0"}' payload = python_lsp.encode_message(message) assert payload.endswith(message.encode("utf-8")) assert payload.startswith( f"Content-Length: {len(message.encode('utf-8'))}\r\n\r\n".encode("ascii") ) def test_frame_buffer_reads_split_messages(): buffer = python_lsp.LspFrameBuffer() first = python_lsp.encode_message('{"id":1}') second = python_lsp.encode_message('{"id":2}') parts = [ first[:12], first[12:] + second[:10], second[10:], ] messages: list[str] = [] for part in parts: messages.extend(buffer.feed(part)) assert messages == ['{"id":1}', '{"id":2}']