Skip to content

Commit d8d898d

Browse files
Lukas Geigerclaude
andcommitted
feat: update lsp_client and tests
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 114af04 commit d8d898d

2 files changed

Lines changed: 17 additions & 3 deletions

File tree

features/lsp_client.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,8 @@ def stop_all(self):
323323
def get_available_servers(self) -> List[str]:
324324
"""Gibt eine Liste der verfügbaren LSP-Server zurück."""
325325
available = []
326-
for lang, config in LSP_SERVERS.items():
327-
if shutil.which(config["check"]):
326+
for lang in LSP_SERVERS:
327+
client = LSPClient(lang, self.root_path)
328+
if client.is_available():
328329
available.append(lang)
329330
return available

tests/test_lsp_client.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import unittest
22
from unittest.mock import patch
33

4-
from features.lsp_client import LSPClient
4+
from features.lsp_client import LSPClient, LSPManager
55

66

77
class LSPClientCommandResolutionTests(unittest.TestCase):
@@ -32,6 +32,19 @@ def test_unavailable_when_no_executable_or_module_exists(self):
3232
self.assertFalse(client.is_available())
3333
self.assertIsNone(client._resolve_command())
3434

35+
def test_available_servers_uses_module_fallback(self):
36+
manager = LSPManager()
37+
38+
def mock_which(_):
39+
return None
40+
41+
def mock_find_spec(name):
42+
return object() if name == "pylsp" else None
43+
44+
with patch("features.lsp_client.shutil.which", side_effect=mock_which), \
45+
patch("features.lsp_client.importlib.util.find_spec", side_effect=mock_find_spec):
46+
self.assertEqual(manager.get_available_servers(), ["Python"])
47+
3548
def test_unknown_language_is_unavailable(self):
3649
client = LSPClient("Unknown")
3750

0 commit comments

Comments
 (0)