31 lines
756 B
Python
31 lines
756 B
Python
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}']
|