Skip to content

Commit 1281fb0

Browse files
committed
Add a completionItem/resolve test
1 parent 7ab4d21 commit 1281fb0

File tree

1 file changed

+68
-0
lines changed

1 file changed

+68
-0
lines changed

test/test_notebook_document.py

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -530,3 +530,71 @@ def test_notebook_completion(client_server_pair) -> None:
530530
},
531531
],
532532
}
533+
534+
535+
@pytest.mark.skipif(IS_WIN, reason="Flaky on Windows")
536+
def test_notebook_completion_resolve(client_server_pair) -> None:
537+
"""
538+
Tests that completion item resolve works correctly
539+
"""
540+
client, server = client_server_pair
541+
send_initialize_request(client)
542+
543+
# Open notebook
544+
with patch.object(server._endpoint, "notify") as mock_notify:
545+
send_notebook_did_open(
546+
client,
547+
[
548+
"def answer():\n\t'''Returns an important number.'''\n\treturn 42",
549+
"ans",
550+
],
551+
)
552+
# wait for expected diagnostics messages
553+
wait_for_condition(lambda: mock_notify.call_count >= 2)
554+
assert len(server.workspace.documents) == 3
555+
for uri in ["cell_1_uri", "cell_2_uri", "notebook_uri"]:
556+
assert uri in server.workspace.documents
557+
558+
future = client._endpoint.request(
559+
"textDocument/completion",
560+
{
561+
"textDocument": {
562+
"uri": "cell_2_uri",
563+
},
564+
"position": {"line": 0, "character": 3},
565+
},
566+
)
567+
result = future.result(CALL_TIMEOUT_IN_SECONDS)
568+
assert result == {
569+
"isIncomplete": False,
570+
"items": [
571+
{
572+
"data": {"doc_uri": "cell_2_uri"},
573+
"insertText": "answer",
574+
"kind": 3,
575+
"label": "answer()",
576+
"sortText": "aanswer",
577+
},
578+
],
579+
}
580+
581+
future = client._endpoint.request(
582+
"completionItem/resolve",
583+
{
584+
"data": {"doc_uri": "cell_2_uri"},
585+
"label": "answer()",
586+
},
587+
)
588+
result = future.result(CALL_TIMEOUT_IN_SECONDS)
589+
del result["detail"] # The value of this is unpredictable.
590+
assert result == {
591+
"data": {"doc_uri": "cell_2_uri"},
592+
"insertText": "answer",
593+
"kind": 3,
594+
"label": "answer()",
595+
"sortText": "aanswer",
596+
"documentation": {
597+
"kind": "markdown",
598+
"value": "```python\nanswer()\n```\n\n\nReturns an important number.",
599+
},
600+
}

0 commit comments

Comments
 (0)