summaryrefslogtreecommitdiffstats
path: root/tests/lsp_tests/conftest.py
blob: 2aff4a26857f0093015a0aed0c65b48aa32fddc9 (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
import pytest

from debputy.plugin.api.feature_set import PluginProvidedFeatureSet
from debputy.util import setup_logging

try:
    from pygls.server import LanguageServer
    from lsprotocol.types import (
        InitializeParams,
        ClientCapabilities,
        GeneralClientCapabilities,
        PositionEncodingKind,
        TextDocumentItem,
        Position,
        CompletionParams,
        TextDocumentIdentifier,
        HoverParams,
        MarkupContent,
    )
    from debputy.lsp.lsp_features import lsp_set_plugin_features

    HAS_PYGLS = True
except ImportError:
    HAS_PYGLS = False


@pytest.fixture(scope="session")
def enable_logging() -> None:
    setup_logging(log_only_to_stderr=True, reconfigure_logging=True)


@pytest.fixture()
def ls(
    enable_logging,
    debputy_plugin_feature_set: PluginProvidedFeatureSet,
) -> "LanguageServer":
    if not HAS_PYGLS:
        pytest.skip("Missing pygls")
    ls = LanguageServer("debputy", "v<test>")
    ls.lsp.lsp_initialize(
        InitializeParams(
            ClientCapabilities(
                general=GeneralClientCapabilities(
                    position_encodings=[PositionEncodingKind.Utf32],
                )
            )
        )
    )
    lsp_set_plugin_features(debputy_plugin_feature_set)
    try:
        yield ls
    finally:
        lsp_set_plugin_features(None)