Replace linter (#37)

This commit is contained in:
Regen
2021-03-28 22:23:57 +09:00
committed by GitHub
parent 6e839f7675
commit 4d120a6a98
17 changed files with 563 additions and 578 deletions

View File

@@ -2,18 +2,19 @@ import asyncio
import logging
import os
import pprint
from pathlib import Path
from subprocess import PIPE, run
from threading import Thread
from typing import Iterable, Tuple
import pytest
from cmake_language_server.server import CMakeLanguageServer
from pygls import features
from pygls.server import LanguageServer
from cmake_language_server.server import CMakeLanguageServer
@pytest.fixture()
def cmake_build(shared_datadir):
def cmake_build(shared_datadir: Path) -> Iterable[Path]:
source = shared_datadir / "cmake"
build = source / "build"
build.mkdir()
@@ -33,11 +34,11 @@ def cmake_build(shared_datadir):
@pytest.fixture()
def client_server():
def client_server() -> Iterable[Tuple[LanguageServer, CMakeLanguageServer]]:
c2s_r, c2s_w = os.pipe()
s2c_r, s2c_w = os.pipe()
def start(ls: LanguageServer, fdr, fdw):
def start(ls: LanguageServer, fdr: int, fdw: int) -> None:
# TODO: better patch is needed
# disable `close()` to avoid error messages
close = ls.loop.close

View File

@@ -1,9 +1,10 @@
import subprocess
from pathlib import Path
from cmake_language_server.api import API
def test_query_with_cache(cmake_build):
def test_query_with_cache(cmake_build: Path) -> None:
api = API("cmake", cmake_build)
assert api.query()
@@ -14,14 +15,14 @@ def test_query_with_cache(cmake_build):
assert reply.exists()
def test_query_without_cache(cmake_build):
def test_query_without_cache(cmake_build: Path) -> None:
api = API("cmake", cmake_build)
(cmake_build / "CMakeCache.txt").unlink()
assert not api.query()
def test_read_variable(cmake_build):
def test_read_variable(cmake_build: Path) -> None:
api = API("cmake", cmake_build)
assert api.query()
assert api.read_reply()
@@ -29,7 +30,7 @@ def test_read_variable(cmake_build):
assert api.get_variable_doc("testproject_BINARY_DIR")
def test_read_cmake_files(cmake_build):
def test_read_cmake_files(cmake_build: Path) -> None:
api = API("cmake", cmake_build)
api.parse_doc()
assert api.query()
@@ -48,7 +49,7 @@ def test_read_cmake_files(cmake_build):
raise RuntimeError("Unexpected system")
def test_parse_commands(cmake_build):
def test_parse_commands(cmake_build: Path) -> None:
api = API("cmake", cmake_build)
api.parse_doc()
@@ -67,7 +68,7 @@ def test_parse_commands(cmake_build):
assert api.get_command_doc("not_existing_command") is None
def test_parse_variables(cmake_build):
def test_parse_variables(cmake_build: Path) -> None:
api = API("cmake", cmake_build)
api.parse_doc()
@@ -88,7 +89,7 @@ def test_parse_variables(cmake_build):
assert api.get_variable_doc("not_existing_variable") is None
def test_parse_modules(cmake_build):
def test_parse_modules(cmake_build: Path) -> None:
api = API("cmake", cmake_build)
api.parse_doc()

View File

@@ -1,13 +1,16 @@
import sys
from contextlib import contextmanager
from io import StringIO
from pathlib import Path
from typing import Callable, Iterator
from cmake_language_server.formatter import Formatter, main
from cmake_language_server.parser import ListParser
from pytest import CaptureFixture
def make_formatter_test(liststr: str, expect: str):
def test():
def make_formatter_test(liststr: str, expect: str) -> Callable[[], None]:
def test() -> None:
tokens, remain = ListParser().parse(liststr)
actual = Formatter().format(tokens)
assert actual == expect
@@ -88,14 +91,14 @@ endif()
@contextmanager
def mock_stdin(buf: str):
def mock_stdin(buf: str) -> Iterator[None]:
stdin = sys.stdin
sys.stdin = StringIO(buf)
yield
sys.stdin = stdin
def test_main_stdin(capsys):
def test_main_stdin(capsys: CaptureFixture[str]) -> None:
with mock_stdin(" a()"):
main([])
captured = capsys.readouterr()
@@ -103,7 +106,7 @@ def test_main_stdin(capsys):
assert captured.err == ""
def test_main_stdin_diff(capsys):
def test_main_stdin_diff(capsys: CaptureFixture[str]) -> None:
with mock_stdin(" a()"):
main(["-d"])
captured = capsys.readouterr()
@@ -112,7 +115,7 @@ def test_main_stdin_diff(capsys):
assert captured.err == ""
def test_main_file_1(capsys, tmp_path):
def test_main_file_1(capsys: CaptureFixture[str], tmp_path: Path) -> None:
testfile1 = tmp_path / "list1.cmake"
with testfile1.open("w") as fp:
fp.write(" a()")
@@ -123,7 +126,7 @@ def test_main_file_1(capsys, tmp_path):
assert captured.err == ""
def test_main_file_2(capsys, tmp_path):
def test_main_file_2(capsys: CaptureFixture[str], tmp_path: Path) -> None:
testfile1 = tmp_path / "list1.cmake"
with testfile1.open("w") as fp:
fp.write(" a()")
@@ -137,7 +140,7 @@ def test_main_file_2(capsys, tmp_path):
assert captured.err == ""
def test_main_inplace(capsys, tmp_path):
def test_main_inplace(capsys: CaptureFixture[str], tmp_path: Path) -> None:
testfile1 = tmp_path / "list1.cmake"
with testfile1.open("w") as fp:
fp.write(" a()")
@@ -152,7 +155,7 @@ def test_main_inplace(capsys, tmp_path):
assert content == "a()\n"
def test_main_diff(capsys, tmp_path):
def test_main_diff(capsys: CaptureFixture[str], tmp_path: Path) -> None:
testfile1 = tmp_path / "list1.cmake"
with testfile1.open("w") as fp:
fp.write(" a()")

View File

@@ -1,12 +1,12 @@
from typing import List
from typing import Callable, List
from cmake_language_server.parser import ListParser, TokenType
def make_parser_test(
liststr: str, expect_token: List[TokenType], expect_remain: str = ""
):
def test():
) -> Callable[[], None]:
def test() -> None:
actual_token, actual_remain = ListParser().parse(liststr)
assert actual_token == expect_token
assert actual_remain == expect_remain

View File

@@ -1,7 +1,8 @@
from concurrent import futures
from pathlib import Path
from typing import Optional
from typing import Optional, Tuple
from cmake_language_server.server import CMakeLanguageServer
from pygls.features import (
COMPLETION,
FORMATTING,
@@ -12,6 +13,7 @@ from pygls.features import (
from pygls.server import LanguageServer
from pygls.types import (
CompletionContext,
CompletionList,
CompletionParams,
CompletionTriggerKind,
DidOpenTextDocumentParams,
@@ -27,7 +29,7 @@ from pygls.types import (
CALL_TIMEOUT = 2
def _init(client: LanguageServer, root: Path):
def _init(client: LanguageServer, root: Path) -> None:
retry = 3
while retry > 0:
try:
@@ -43,7 +45,7 @@ def _init(client: LanguageServer, root: Path):
break
def _open(client: LanguageServer, path: Path, text: Optional[str] = None):
def _open(client: LanguageServer, path: Path, text: Optional[str] = None) -> None:
if text is None:
with open(path) as fp:
text = fp.read()
@@ -55,8 +57,11 @@ def _open(client: LanguageServer, path: Path, text: Optional[str] = None):
def _test_completion(
client_server, datadir, content: str, context: Optional[CompletionContext]
):
client_server: Tuple[LanguageServer, CMakeLanguageServer],
datadir: Path,
content: str,
context: Optional[CompletionContext],
) -> CompletionList:
client, server = client_server
_init(client, datadir)
path = datadir / "CMakeLists.txt"
@@ -70,7 +75,9 @@ def _test_completion(
return client.lsp.send_request(COMPLETION, params).result(timeout=CALL_TIMEOUT)
def test_initialize(client_server, datadir):
def test_initialize(
client_server: Tuple[LanguageServer, CMakeLanguageServer], datadir: Path
) -> None:
client, server = client_server
assert server._api is None
@@ -78,7 +85,9 @@ def test_initialize(client_server, datadir):
assert server._api is not None
def test_completions_invoked(client_server, datadir):
def test_completions_invoked(
client_server: Tuple[LanguageServer, CMakeLanguageServer], datadir: Path
) -> None:
response = _test_completion(
client_server,
datadir,
@@ -90,14 +99,18 @@ def test_completions_invoked(client_server, datadir):
assert "<PROJECT-NAME>" in item.documentation
def test_completions_nocontext(client_server, datadir):
def test_completions_nocontext(
client_server: Tuple[LanguageServer, CMakeLanguageServer], datadir: Path
) -> None:
response = _test_completion(client_server, datadir, "projec", None)
item = next(filter(lambda x: x.label == "project", response.items), None)
assert item is not None
assert "<PROJECT-NAME>" in item.documentation
def test_completions_triggercharacter_variable(client_server, datadir):
def test_completions_triggercharacter_variable(
client_server: Tuple[LanguageServer, CMakeLanguageServer], datadir: Path
) -> None:
response = _test_completion(
client_server,
datadir,
@@ -110,7 +123,9 @@ def test_completions_triggercharacter_variable(client_server, datadir):
assert response == response_nocontext
def test_completions_triggercharacter_module(client_server, datadir):
def test_completions_triggercharacter_module(
client_server: Tuple[LanguageServer, CMakeLanguageServer], datadir: Path
) -> None:
response = _test_completion(
client_server,
datadir,
@@ -123,7 +138,9 @@ def test_completions_triggercharacter_module(client_server, datadir):
assert response == response_nocontext
def test_completions_triggercharacter_package(client_server, datadir):
def test_completions_triggercharacter_package(
client_server: Tuple[LanguageServer, CMakeLanguageServer], datadir: Path
) -> None:
response = _test_completion(
client_server,
datadir,
@@ -136,7 +153,9 @@ def test_completions_triggercharacter_package(client_server, datadir):
assert response == response_nocontext
def test_formatting(client_server, datadir):
def test_formatting(
client_server: Tuple[LanguageServer, CMakeLanguageServer], datadir: Path
) -> None:
client, server = client_server
_init(client, datadir)
path = datadir / "CMakeLists.txt"
@@ -150,7 +169,9 @@ def test_formatting(client_server, datadir):
assert response[0].newText == "a(b c)\n"
def test_hover(client_server, datadir):
def test_hover(
client_server: Tuple[LanguageServer, CMakeLanguageServer], datadir: Path
) -> None:
client, server = client_server
_init(client, datadir)
path = datadir / "CMakeLists.txt"