summaryrefslogtreecommitdiffstats
path: root/tests/python/requests/test_initilize_request.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/python/requests/test_initilize_request.py')
-rw-r--r--tests/python/requests/test_initilize_request.py406
1 files changed, 406 insertions, 0 deletions
diff --git a/tests/python/requests/test_initilize_request.py b/tests/python/requests/test_initilize_request.py
new file mode 100644
index 0000000..1dc259c
--- /dev/null
+++ b/tests/python/requests/test_initilize_request.py
@@ -0,0 +1,406 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+import json
+import uuid
+
+import hamcrest
+import jsonrpc
+import pytest
+
+ID = str(uuid.uuid4())
+INITIALIZE_PARAMS = {
+ "processId": 1105947,
+ "rootPath": "/home/user/src/Personal/jedi-language-server",
+ "rootUri": "file:///home/user/src/Personal/jedi-language-server",
+ "capabilities": {
+ "workspace": {
+ "applyEdit": True,
+ "workspaceEdit": {
+ "documentChanges": True,
+ "resourceOperations": ["create", "rename", "delete"],
+ "failureHandling": "undo",
+ "normalizesLineEndings": True,
+ "changeAnnotationSupport": {"groupsOnLabel": False},
+ },
+ "didChangeConfiguration": {"dynamicRegistration": True},
+ "didChangeWatchedFiles": {
+ "dynamicRegistration": True,
+ "relativePatternSupport": True,
+ },
+ "codeLens": {"refreshSupport": True},
+ "executeCommand": {"dynamicRegistration": True},
+ "configuration": True,
+ "fileOperations": {
+ "dynamicRegistration": True,
+ "didCreate": True,
+ "didRename": True,
+ "didDelete": True,
+ "willCreate": True,
+ "willRename": True,
+ "willDelete": True,
+ },
+ "semanticTokens": {"refreshSupport": True},
+ "inlayHint": {"refreshSupport": True},
+ "inlineValue": {"refreshSupport": True},
+ "diagnostics": {"refreshSupport": True},
+ "symbol": {
+ "dynamicRegistration": True,
+ "symbolKind": {
+ "valueSet": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26,
+ ]
+ },
+ "tagSupport": {"valueSet": [1]},
+ "resolveSupport": {"properties": ["location.range"]},
+ },
+ "workspaceFolders": True,
+ },
+ "textDocument": {
+ "publishDiagnostics": {
+ "relatedInformation": True,
+ "versionSupport": True,
+ "tagSupport": {"valueSet": [1, 2]},
+ "codeDescriptionSupport": True,
+ "dataSupport": True,
+ },
+ "synchronization": {
+ "dynamicRegistration": True,
+ "willSave": True,
+ "willSaveWaitUntil": True,
+ "didSave": True,
+ },
+ "completion": {
+ "dynamicRegistration": True,
+ "contextSupport": True,
+ "completionItem": {
+ "snippetSupport": True,
+ "commitCharactersSupport": True,
+ "documentationFormat": ["markdown", "plaintext"],
+ "deprecatedSupport": True,
+ "preselectSupport": True,
+ "insertReplaceSupport": True,
+ "tagSupport": {"valueSet": [1]},
+ "resolveSupport": {
+ "properties": ["documentation", "detail", "additionalTextEdits"]
+ },
+ "labelDetailsSupport": True,
+ "insertTextModeSupport": {"valueSet": [1, 2]},
+ },
+ "completionItemKind": {
+ "valueSet": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ ]
+ },
+ "insertTextMode": 2,
+ "completionList": {
+ "itemDefaults": [
+ "commitCharacters",
+ "editRange",
+ "insertTextFormat",
+ "insertTextMode",
+ ]
+ },
+ },
+ "hover": {
+ "dynamicRegistration": True,
+ "contentFormat": ["markdown", "plaintext"],
+ },
+ "signatureHelp": {
+ "dynamicRegistration": True,
+ "contextSupport": True,
+ "signatureInformation": {
+ "documentationFormat": ["markdown", "plaintext"],
+ "activeParameterSupport": True,
+ "parameterInformation": {"labelOffsetSupport": True},
+ },
+ },
+ "references": {"dynamicRegistration": True},
+ "definition": {"dynamicRegistration": True, "linkSupport": True},
+ "documentHighlight": {"dynamicRegistration": True},
+ "documentSymbol": {
+ "dynamicRegistration": True,
+ "symbolKind": {
+ "valueSet": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26,
+ ]
+ },
+ "hierarchicalDocumentSymbolSupport": True,
+ "tagSupport": {"valueSet": [1]},
+ "labelSupport": True,
+ },
+ "codeAction": {
+ "dynamicRegistration": True,
+ "isPreferredSupport": True,
+ "disabledSupport": True,
+ "dataSupport": True,
+ "honorsChangeAnnotations": False,
+ "resolveSupport": {"properties": ["edit"]},
+ "codeActionLiteralSupport": {
+ "codeActionKind": {
+ "valueSet": [
+ "",
+ "quickfix",
+ "refactor",
+ "refactor.extract",
+ "refactor.inline",
+ "refactor.rewrite",
+ "source",
+ "source.organizeImports",
+ ]
+ }
+ },
+ },
+ "codeLens": {"dynamicRegistration": True},
+ "formatting": {"dynamicRegistration": True},
+ "rangeFormatting": {"dynamicRegistration": True},
+ "onTypeFormatting": {"dynamicRegistration": True},
+ "rename": {
+ "dynamicRegistration": True,
+ "prepareSupport": True,
+ "honorsChangeAnnotations": True,
+ "prepareSupportDefaultBehavior": 1,
+ },
+ "documentLink": {"dynamicRegistration": True, "tooltipSupport": True},
+ "typeDefinition": {"dynamicRegistration": True, "linkSupport": True},
+ "implementation": {"dynamicRegistration": True, "linkSupport": True},
+ "declaration": {"dynamicRegistration": True, "linkSupport": True},
+ "colorProvider": {"dynamicRegistration": True},
+ "foldingRange": {
+ "dynamicRegistration": True,
+ "rangeLimit": 5000,
+ "lineFoldingOnly": True,
+ "foldingRangeKind": {"valueSet": ["comment", "imports", "region"]},
+ "foldingRange": {"collapsedText": False},
+ },
+ "selectionRange": {"dynamicRegistration": True},
+ "callHierarchy": {"dynamicRegistration": True},
+ "linkedEditingRange": {"dynamicRegistration": True},
+ "semanticTokens": {
+ "dynamicRegistration": True,
+ "tokenTypes": [
+ "namespace",
+ "type",
+ "class",
+ "enum",
+ "interface",
+ "struct",
+ "typeParameter",
+ "parameter",
+ "variable",
+ "property",
+ "enumMember",
+ "event",
+ "function",
+ "method",
+ "macro",
+ "keyword",
+ "modifier",
+ "comment",
+ "string",
+ "number",
+ "regexp",
+ "decorator",
+ "operator",
+ ],
+ "tokenModifiers": [
+ "declaration",
+ "definition",
+ "readonly",
+ "static",
+ "deprecated",
+ "abstract",
+ "async",
+ "modification",
+ "documentation",
+ "defaultLibrary",
+ ],
+ "formats": ["relative"],
+ "requests": {"range": True, "full": {"delta": True}},
+ "multilineTokenSupport": False,
+ "overlappingTokenSupport": False,
+ "serverCancelSupport": True,
+ "augmentsSyntaxTokens": True,
+ },
+ "inlayHint": {
+ "dynamicRegistration": True,
+ "resolveSupport": {
+ "properties": [
+ "tooltip",
+ "textEdits",
+ "label.tooltip",
+ "label.location",
+ "label.command",
+ ]
+ },
+ },
+ "inlineValue": {"dynamicRegistration": True},
+ "diagnostic": {"dynamicRegistration": True, "relatedDocumentSupport": True},
+ "typeHierarchy": {"dynamicRegistration": True},
+ },
+ "window": {
+ "showMessage": {"messageActionItem": {"additionalPropertiesSupport": True}},
+ "showDocument": {"support": True},
+ "workDoneProgress": True,
+ },
+ "general": {
+ "regularExpressions": {"engine": "ECMAScript", "version": "ES2020"},
+ "markdown": {"parser": "marked", "version": "4.0.10"},
+ "positionEncodings": ["utf-16"],
+ "staleRequestSupport": {
+ "cancel": True,
+ "retryOnContentModified": [
+ "textDocument/inlayHint",
+ "textDocument/semanticTokens/full",
+ "textDocument/semanticTokens/range",
+ "textDocument/semanticTokens/full/delta",
+ ],
+ },
+ },
+ },
+ "initializationOptions": {
+ "enable": True,
+ "startupMessage": False,
+ "trace": {"server": "verbose"},
+ "jediSettings": {
+ "autoImportModules": ["pygls"],
+ "caseInsensitiveCompletion": True,
+ "debug": False,
+ },
+ "executable": {"args": [], "command": "jedi-language-server"},
+ "codeAction": {
+ "nameExtractFunction": "jls_extract_def",
+ "nameExtractVariable": "jls_extract_var",
+ },
+ "completion": {
+ "disableSnippets": False,
+ "resolveEagerly": False,
+ "ignorePatterns": [],
+ },
+ "diagnostics": {
+ "enable": True,
+ "didOpen": True,
+ "didChange": True,
+ "didSave": True,
+ },
+ "hover": {
+ "enable": True,
+ "disable": {
+ "class": {"all": False, "names": [], "fullNames": []},
+ "function": {"all": False, "names": [], "fullNames": []},
+ "instance": {"all": False, "names": [], "fullNames": []},
+ "keyword": {"all": False, "names": [], "fullNames": []},
+ "module": {"all": False, "names": [], "fullNames": []},
+ "param": {"all": False, "names": [], "fullNames": []},
+ "path": {"all": False, "names": [], "fullNames": []},
+ "property": {"all": False, "names": [], "fullNames": []},
+ "statement": {"all": False, "names": [], "fullNames": []},
+ },
+ },
+ "workspace": {
+ "extraPaths": [],
+ "symbols": {
+ "maxSymbols": 20,
+ "ignoreFolders": [".nox", ".tox", ".venv", "__pycache__", "venv"],
+ },
+ },
+ },
+ "trace": "verbose",
+ "workspaceFolders": [
+ {
+ "uri": "file:///home/user/src/Personal/jedi-language-server",
+ "name": "jedi-language-server",
+ }
+ ],
+ "locale": "en_US",
+ "clientInfo": {"name": "coc.nvim", "version": "0.0.82"},
+}
+
+
+TEST_DATA = [
+ {"id": ID, "params": INITIALIZE_PARAMS, "method": "initialize", "jsonrpc": "2.0"},
+]
+
+
+@pytest.mark.parametrize("index", list(range(0, len(TEST_DATA))))
+def test_initialize_request_params(index):
+ data = TEST_DATA[index]
+ data_str = json.dumps(data)
+ parsed = jsonrpc.from_json(data_str)
+ actual_str = jsonrpc.to_json(parsed)
+ actual_data = json.loads(actual_str)
+ hamcrest.assert_that(actual_data, hamcrest.is_(data))