summaryrefslogtreecommitdiffstats
path: root/tests/lsp_tests/test_lsp_dctrl.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/lsp_tests/test_lsp_dctrl.py')
-rw-r--r--tests/lsp_tests/test_lsp_dctrl.py72
1 files changed, 72 insertions, 0 deletions
diff --git a/tests/lsp_tests/test_lsp_dctrl.py b/tests/lsp_tests/test_lsp_dctrl.py
new file mode 100644
index 0000000..2a2466f
--- /dev/null
+++ b/tests/lsp_tests/test_lsp_dctrl.py
@@ -0,0 +1,72 @@
+import textwrap
+
+try:
+ from lsprotocol.types import (
+ CompletionParams,
+ TextDocumentIdentifier,
+ HoverParams,
+ MarkupContent,
+ )
+
+ from debputy.lsp.lsp_debian_control import (
+ _debian_control_completions,
+ _debian_control_hover,
+ )
+
+ from pygls.server import LanguageServer
+except ImportError:
+ pass
+from lsp_tests.lsp_tutil import put_doc_with_cursor
+
+
+def test_dctrl_complete_field(ls: "LanguageServer") -> None:
+ dctrl_uri = "file:///nowhere/debian/control"
+
+ cursor_pos = put_doc_with_cursor(
+ ls,
+ dctrl_uri,
+ "debian/control",
+ textwrap.dedent(
+ """\
+ Source: foo
+
+ Package: foo
+ <CURSOR>
+"""
+ ),
+ )
+ matches = _debian_control_completions(
+ ls,
+ CompletionParams(TextDocumentIdentifier(dctrl_uri), cursor_pos),
+ )
+ assert matches
+ keywords = {m.label for m in matches}
+ assert "Multi-Arch" in keywords
+ assert "Architecture" in keywords
+ # Already present or wrong section
+ assert "Package" not in keywords
+ assert "Source" not in keywords
+
+
+def test_dctrl_hover_doc_field(ls: "LanguageServer") -> None:
+ dctrl_uri = "file:///nowhere/debian/control"
+ cursor_pos = put_doc_with_cursor(
+ ls,
+ dctrl_uri,
+ "debian/control",
+ textwrap.dedent(
+ """\
+ Source: foo
+
+ Package: foo
+ Arch<CURSOR>itecture: any
+"""
+ ),
+ )
+
+ hover_doc = _debian_control_hover(
+ ls,
+ HoverParams(TextDocumentIdentifier(dctrl_uri), cursor_pos),
+ )
+ assert hover_doc is not None and isinstance(hover_doc.contents, MarkupContent)
+ assert "Determines which architecture" in hover_doc.contents.value