Refactoring: Rename Language to LanguageServerId

This resolves a long-standing naming issue in Serena & SolidLSP.
This commit is contained in:
Dominik Jain authored and Dominik Jain committed 2026-07-22 20:55:36 +02:00
1 parent ef0e218fb1
commit d2cf18ddcb
180 files changed
+1806 -1767

No files matched your search

+11 -11
View File
@@ -3,13 +3,13 @@ from pathlib import Path
import pytest
from solidlsp import SolidLanguageServer
from solidlsp.ls_config import Language
from test.conftest import language_tests_enabled
from solidlsp.ls_config import LanguageServerId
from test.conftest import language_server_tests_enabled
from test.solidlsp.conftest import format_symbol_for_assert, has_malformed_name, request_all_symbols
from test.solidlsp.util.diagnostics import assert_file_diagnostics
pytestmark = pytest.mark.skipif(
not language_tests_enabled(Language.PERL), reason="Perl tests are disabled (Perl::LanguageServer not available)"
not language_server_tests_enabled(LanguageServerId.PERL), reason="Perl tests are disabled (Perl::LanguageServer not available)"
)
@@ -24,15 +24,15 @@ class TestPerlLanguageServer:
- Find references (including cross-file) - this was not available in PLS
"""
@pytest.mark.parametrize("language_server", [Language.PERL], indirect=True)
@pytest.mark.parametrize("repo_path", [Language.PERL], indirect=True)
@pytest.mark.parametrize("language_server", [LanguageServerId.PERL], indirect=True)
@pytest.mark.parametrize("repo_path", [LanguageServerId.PERL], indirect=True)
def test_ls_is_running(self, language_server: SolidLanguageServer, repo_path: Path) -> None:
"""Test that the language server starts and stops successfully."""
# The fixture already handles start and stop
assert language_server.is_running()
assert Path(language_server.language_server.repository_root_path).resolve() == repo_path.resolve()
@pytest.mark.parametrize("language_server", [Language.PERL], indirect=True)
@pytest.mark.parametrize("language_server", [LanguageServerId.PERL], indirect=True)
def test_document_symbols(self, language_server: SolidLanguageServer) -> None:
"""Test that document symbols are correctly identified."""
# Request document symbols
@@ -56,7 +56,7 @@ class TestPerlLanguageServer:
assert "use_helper_function" in function_names, f"Expected 'use_helper_function' in symbols, found: {function_names}"
# @pytest.mark.skip(reason="Perl::LanguageServer cross-file definition tracking needs configuration")
@pytest.mark.parametrize("language_server", [Language.PERL], indirect=True)
@pytest.mark.parametrize("language_server", [LanguageServerId.PERL], indirect=True)
def test_find_definition_across_files(self, language_server: SolidLanguageServer) -> None:
definition_location_list = language_server.request_definition("main.pl", 17, 0)
@@ -66,7 +66,7 @@ class TestPerlLanguageServer:
assert definition_location["uri"].endswith("helper.pl")
assert definition_location["range"]["start"]["line"] == 4 # add method on line 2 (0-indexed 1)
@pytest.mark.parametrize("language_server", [Language.PERL], indirect=True)
@pytest.mark.parametrize("language_server", [LanguageServerId.PERL], indirect=True)
def test_find_references_across_files(self, language_server: SolidLanguageServer) -> None:
"""Test finding references to a function across multiple files."""
reference_locations = language_server.request_references("helper.pl", 4, 5)
@@ -80,7 +80,7 @@ class TestPerlLanguageServer:
assert 17 in main_pl_lines, f"Expected reference at line 18 (0-indexed 17), found: {main_pl_lines}"
assert 20 in main_pl_lines, f"Expected reference at line 21 (0-indexed 20), found: {main_pl_lines}"
@pytest.mark.parametrize("language_server", [Language.PERL], indirect=True)
@pytest.mark.parametrize("language_server", [LanguageServerId.PERL], indirect=True)
def test_find_references_includes_t_files(self, language_server: SolidLanguageServer) -> None:
"""References to a .pm/.pl sub must surface callers in .t test files (fileFilter includes .t)."""
reference_locations = language_server.request_references("helper.pl", 4, 5)
@@ -88,7 +88,7 @@ class TestPerlLanguageServer:
t_refs = [ref for ref in reference_locations if ref["uri"].endswith(".t")]
assert t_refs, f"Expected at least one reference in a .t file, got: {[r['uri'] for r in reference_locations]}"
@pytest.mark.parametrize("language_server", [Language.PERL], indirect=True)
@pytest.mark.parametrize("language_server", [LanguageServerId.PERL], indirect=True)
def test_bare_symbol_names(self, language_server) -> None:
all_symbols = request_all_symbols(language_server)
malformed_symbols = []
@@ -101,7 +101,7 @@ class TestPerlLanguageServer:
pytrace=False,
)
@pytest.mark.parametrize("language_server", [Language.PERL], indirect=True)
@pytest.mark.parametrize("language_server", [LanguageServerId.PERL], indirect=True)
def test_file_diagnostics(self, language_server: SolidLanguageServer) -> None:
assert_file_diagnostics(
language_server,
+10 -10
View File
@@ -18,7 +18,7 @@ from solidlsp.language_servers.perl_language_server import (
_DEFAULT_IGNORE_DIRS,
PerlLanguageServer,
)
from solidlsp.ls_config import FilenameMatcher, Language
from solidlsp.ls_config import FilenameMatcher, LanguageServerId
from solidlsp.settings import SolidLSPSettings
@@ -40,7 +40,7 @@ class TestResolveFilterSettings:
def test_defaults_when_perl_key_absent(self, tmp_path: Path) -> None:
# ls_specific_settings configured for another language must not leak into Perl.
settings = _settings(tmp_path, {Language.PYTHON: {"something": "unrelated"}})
settings = _settings(tmp_path, {LanguageServerId.PYTHON: {"something": "unrelated"}})
file_filter, ignore_dirs = PerlLanguageServer._resolve_filter_settings(settings)
@@ -50,7 +50,7 @@ class TestResolveFilterSettings:
def test_custom_file_filter_makes_extra_extensions_visible(self, tmp_path: Path) -> None:
# #1449: a Perl web backend must be able to surface .cgi / .psgi handlers.
custom = [".pm", ".pl", ".t", ".cgi", ".psgi"]
settings = _settings(tmp_path, {Language.PERL: {"file_filter": custom}})
settings = _settings(tmp_path, {LanguageServerId.PERL: {"file_filter": custom}})
file_filter, _ = PerlLanguageServer._resolve_filter_settings(settings)
@@ -59,7 +59,7 @@ class TestResolveFilterSettings:
def test_custom_ignore_dirs(self, tmp_path: Path) -> None:
custom = [".git", "blib", "local", "cover_db", "t"]
settings = _settings(tmp_path, {Language.PERL: {"ignore_dirs": custom}})
settings = _settings(tmp_path, {LanguageServerId.PERL: {"ignore_dirs": custom}})
_, ignore_dirs = PerlLanguageServer._resolve_filter_settings(settings)
@@ -70,7 +70,7 @@ class TestResolveFilterSettings:
ignore_dirs = [".git", "vendor"]
settings = _settings(
tmp_path,
{Language.PERL: {"file_filter": file_filter, "ignore_dirs": ignore_dirs}},
{LanguageServerId.PERL: {"file_filter": file_filter, "ignore_dirs": ignore_dirs}},
)
resolved_filter, resolved_dirs = PerlLanguageServer._resolve_filter_settings(settings)
@@ -165,12 +165,12 @@ class TestSourceFnMatcherSync:
# #1449: find_symbol relies on Language.PERL.get_source_fn_matcher(); unless the configured
# extensions are synced into it, symbols in .cgi/.psgi files stay invisible even though the
# LS indexes them. get_source_fn_matcher() is a @cache singleton, so reset() afterwards.
matcher = Language.PERL.get_source_fn_matcher()
matcher = LanguageServerId.PERL.get_source_fn_matcher()
try:
assert not matcher.is_relevant_filename("handler.cgi") # guard: not matched by default
file_filter, _ = PerlLanguageServer._resolve_filter_settings(
_settings(tmp_path, {Language.PERL: {"file_filter": [".pm", ".pl", ".t", ".cgi", ".psgi"]}})
_settings(tmp_path, {LanguageServerId.PERL: {"file_filter": [".pm", ".pl", ".t", ".cgi", ".psgi"]}})
)
PerlLanguageServer._sync_source_fn_matcher(file_filter)
@@ -183,7 +183,7 @@ class TestSourceFnMatcherSync:
def test_default_file_filter_leaves_matcher_unchanged(self, tmp_path: Path) -> None:
# The default file_filter matches the existing Perl matcher extensions, so syncing it must
# be a no-op (no duplicate entries, no new matches).
matcher = Language.PERL.get_source_fn_matcher()
matcher = LanguageServerId.PERL.get_source_fn_matcher()
try:
initial = list(matcher._file_extensions)
file_filter, _ = PerlLanguageServer._resolve_filter_settings(_settings(tmp_path))
@@ -198,11 +198,11 @@ class TestSourceFnMatcherSync:
# file_filter (adds .cgi); when project B is activated, SolidLanguageServer.__init__ resets
# the matcher first, so project B must NOT see .cgi even though project A added it.
# Mirrors the reset-then-sync ordering of PerlLanguageServer.__init__.
matcher = Language.PERL.get_source_fn_matcher()
matcher = LanguageServerId.PERL.get_source_fn_matcher()
try:
# project A: custom file_filter with .cgi
filter_a, _ = PerlLanguageServer._resolve_filter_settings(
_settings(tmp_path, {Language.PERL: {"file_filter": [".pm", ".pl", ".t", ".cgi"]}})
_settings(tmp_path, {LanguageServerId.PERL: {"file_filter": [".pm", ".pl", ".t", ".cgi"]}})
)
PerlLanguageServer._sync_source_fn_matcher(filter_a)
assert matcher.is_relevant_filename("handler.cgi")