summaryrefslogtreecommitdiffstats
path: root/tests/python/requests/test_initilize_request.py
blob: 1dc259c7123dca2fb122e7b0a59446a8c45977c5 (plain)
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
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))