mirror of
https://github.com/tiennm99/serena.git
synced 2026-10-13 20:15:20 +00:00
Refactoring: Rename Language to LanguageServerId
This resolves a long-standing naming issue in Serena & SolidLSP.
This commit is contained in:
1 parent
ef0e218fb1
commit
d2cf18ddcb
180 files changed
+1806
-1767
No files matched your search
@@ -14,7 +14,7 @@ import pytest
|
||||
|
||||
from serena.util.text_utils import find_text_coordinates
|
||||
from solidlsp import SolidLanguageServer
|
||||
from solidlsp.ls_config import Language
|
||||
from solidlsp.ls_config import LanguageServerId
|
||||
from solidlsp.ls_types import SymbolKind
|
||||
from solidlsp.lsp_protocol_handler import lsp_types as LSPTypes
|
||||
from test.solidlsp.conftest import read_repo_file, request_all_symbols
|
||||
@@ -22,20 +22,20 @@ from test.solidlsp.conftest import read_repo_file, request_all_symbols
|
||||
|
||||
@pytest.mark.scss
|
||||
class TestScssLanguageServerBasics:
|
||||
@pytest.mark.parametrize("language_server", [Language.SCSS], indirect=True)
|
||||
@pytest.mark.parametrize("repo_path", [Language.SCSS], indirect=True)
|
||||
@pytest.mark.parametrize("language_server", [LanguageServerId.SCSS], indirect=True)
|
||||
@pytest.mark.parametrize("repo_path", [LanguageServerId.SCSS], indirect=True)
|
||||
def test_ls_is_running(self, language_server: SolidLanguageServer, repo_path: Path) -> None:
|
||||
assert language_server.is_running()
|
||||
assert Path(language_server.language_server.repository_root_path).resolve() == repo_path.resolve()
|
||||
|
||||
@pytest.mark.parametrize("language_server", [Language.SCSS], indirect=True)
|
||||
@pytest.mark.parametrize("language_server", [LanguageServerId.SCSS], indirect=True)
|
||||
def test_variables_document_symbols(self, language_server: SolidLanguageServer) -> None:
|
||||
all_symbols, _ = language_server.request_document_symbols("_variables.scss").get_all_symbols_and_roots()
|
||||
names = [s["name"] for s in all_symbols]
|
||||
for var in ("$color-primary", "$color-secondary", "$color-text", "$space-md", "$space-lg"):
|
||||
assert var in names, f"Expected variable {var} to appear in SCSS symbols: {names}"
|
||||
|
||||
@pytest.mark.parametrize("language_server", [Language.SCSS], indirect=True)
|
||||
@pytest.mark.parametrize("language_server", [LanguageServerId.SCSS], indirect=True)
|
||||
def test_mixins_document_symbols(self, language_server: SolidLanguageServer) -> None:
|
||||
all_symbols, _ = language_server.request_document_symbols("_mixins.scss").get_all_symbols_and_roots()
|
||||
names = [s["name"] for s in all_symbols]
|
||||
@@ -45,7 +45,7 @@ class TestScssLanguageServerBasics:
|
||||
for expected in ("card-surface", "focus-ring", "rem"):
|
||||
assert expected in joined, f"Expected '{expected}' to appear in SCSS mixin symbols: {names}"
|
||||
|
||||
@pytest.mark.parametrize("language_server", [Language.SCSS], indirect=True)
|
||||
@pytest.mark.parametrize("language_server", [LanguageServerId.SCSS], indirect=True)
|
||||
def test_buttons_document_symbols(self, language_server: SolidLanguageServer) -> None:
|
||||
all_symbols, _ = language_server.request_document_symbols("buttons.scss").get_all_symbols_and_roots()
|
||||
names = [s["name"] for s in all_symbols]
|
||||
@@ -53,7 +53,7 @@ class TestScssLanguageServerBasics:
|
||||
for selector in (".button", ".button-primary", ".button-secondary"):
|
||||
assert selector in joined, f"Expected selector '{selector}' to appear in SCSS symbols: {names}"
|
||||
|
||||
@pytest.mark.parametrize("language_server", [Language.SCSS], indirect=True)
|
||||
@pytest.mark.parametrize("language_server", [LanguageServerId.SCSS], indirect=True)
|
||||
def test_cross_file_definition_variable(self, language_server: SolidLanguageServer) -> None:
|
||||
"""`vars.$color-text` in buttons.scss must resolve into _variables.scss."""
|
||||
path = "buttons.scss"
|
||||
@@ -69,7 +69,7 @@ class TestScssLanguageServerBasics:
|
||||
f"Expected definition to resolve into _variables.scss, got URIs: {target_uris}"
|
||||
)
|
||||
|
||||
@pytest.mark.parametrize("language_server", [Language.SCSS], indirect=True)
|
||||
@pytest.mark.parametrize("language_server", [LanguageServerId.SCSS], indirect=True)
|
||||
def test_cross_file_definition_mixin(self, language_server: SolidLanguageServer) -> None:
|
||||
"""`mix.card-surface` in buttons.scss must resolve into _mixins.scss."""
|
||||
path = "buttons.scss"
|
||||
@@ -84,7 +84,7 @@ class TestScssLanguageServerBasics:
|
||||
f"Expected definition to resolve into _mixins.scss, got URIs: {target_uris}"
|
||||
)
|
||||
|
||||
@pytest.mark.parametrize("language_server", [Language.SCSS], indirect=True)
|
||||
@pytest.mark.parametrize("language_server", [LanguageServerId.SCSS], indirect=True)
|
||||
def test_cross_file_definition_function(self, language_server: SolidLanguageServer) -> None:
|
||||
"""`mix.rem(16)` in main.scss must resolve into _mixins.scss (an @function)."""
|
||||
path = "main.scss"
|
||||
@@ -100,7 +100,7 @@ class TestScssLanguageServerBasics:
|
||||
f"Expected definition to resolve into _mixins.scss, got URIs: {target_uris}"
|
||||
)
|
||||
|
||||
@pytest.mark.parametrize("language_server", [Language.SCSS], indirect=True)
|
||||
@pytest.mark.parametrize("language_server", [LanguageServerId.SCSS], indirect=True)
|
||||
def test_full_symbol_tree_includes_all_files(self, language_server: SolidLanguageServer) -> None:
|
||||
all_symbols = request_all_symbols(language_server)
|
||||
relative_paths = {s.get("location", {}).get("relativePath") for s in all_symbols}
|
||||
@@ -112,7 +112,7 @@ class TestScssLanguageServerBasics:
|
||||
class TestScssReferences:
|
||||
"""Find-references for symbols re-exported via @use across files."""
|
||||
|
||||
@pytest.mark.parametrize("language_server", [Language.SCSS], indirect=True)
|
||||
@pytest.mark.parametrize("language_server", [LanguageServerId.SCSS], indirect=True)
|
||||
def test_mixin_references_span_files(self, language_server: SolidLanguageServer) -> None:
|
||||
"""References for ``card-surface`` must include both ``buttons.scss``
|
||||
(`.button`, `.button-primary`, `.button-secondary` all `@include` it) and
|
||||
@@ -135,7 +135,7 @@ class TestScssReferences:
|
||||
)
|
||||
assert any(p.endswith("main.scss") for p in ref_paths), f"Expected card-surface references to include main.scss, got: {ref_paths}"
|
||||
|
||||
@pytest.mark.parametrize("language_server", [Language.SCSS], indirect=True)
|
||||
@pytest.mark.parametrize("language_server", [LanguageServerId.SCSS], indirect=True)
|
||||
def test_variable_references_span_files(self, language_server: SolidLanguageServer) -> None:
|
||||
"""`$color-primary` is read in ``buttons.scss`` (`.button-primary` background)
|
||||
and ``_mixins.scss`` (default value of ``focus-ring``); references invoked
|
||||
@@ -160,7 +160,7 @@ class TestScssReferences:
|
||||
class TestScssForward:
|
||||
"""`@forward` re-exports a module; consumers should reach forwarded symbols."""
|
||||
|
||||
@pytest.mark.parametrize("language_server", [Language.SCSS], indirect=True)
|
||||
@pytest.mark.parametrize("language_server", [LanguageServerId.SCSS], indirect=True)
|
||||
def test_forwarded_buttons_appear_in_workspace(self, language_server: SolidLanguageServer) -> None:
|
||||
"""``main.scss`` does ``@forward "buttons"``; the workspace symbol tree must
|
||||
still include ``buttons.scss`` selectors so consumers of `main` can navigate.
|
||||
@@ -176,7 +176,7 @@ class TestScssForward:
|
||||
class TestScssHover:
|
||||
"""Some Sass returns rich hover content (SassDoc / value preview)."""
|
||||
|
||||
@pytest.mark.parametrize("language_server", [Language.SCSS], indirect=True)
|
||||
@pytest.mark.parametrize("language_server", [LanguageServerId.SCSS], indirect=True)
|
||||
def test_hover_on_variable_use(self, language_server: SolidLanguageServer) -> None:
|
||||
path = "buttons.scss"
|
||||
needle = "$color-text"
|
||||
@@ -190,7 +190,7 @@ class TestScssHover:
|
||||
text = contents["value"] if isinstance(contents, dict) else str(contents)
|
||||
assert "color-text" in text, f"Expected '$color-text' or its value in hover text, got: {text}"
|
||||
|
||||
@pytest.mark.parametrize("language_server", [Language.SCSS], indirect=True)
|
||||
@pytest.mark.parametrize("language_server", [LanguageServerId.SCSS], indirect=True)
|
||||
def test_hover_on_mixin_call(self, language_server: SolidLanguageServer) -> None:
|
||||
path = "buttons.scss"
|
||||
needle = "card-surface"
|
||||
@@ -209,7 +209,7 @@ class TestScssHover:
|
||||
class TestScssCompletions:
|
||||
"""Completions after a namespaced @use prefix should list re-exported members."""
|
||||
|
||||
@pytest.mark.parametrize("language_server", [Language.SCSS], indirect=True)
|
||||
@pytest.mark.parametrize("language_server", [LanguageServerId.SCSS], indirect=True)
|
||||
def test_completion_after_namespace_dot(self, language_server: SolidLanguageServer) -> None:
|
||||
"""Completion immediately after `vars.` in buttons.scss must include the
|
||||
variables defined in _variables.scss (e.g. ``$color-primary``).
|
||||
@@ -233,7 +233,7 @@ class TestScssCompletions:
|
||||
class TestScssSymbolKinds:
|
||||
"""Validate that Some Sass classifies SCSS symbols with sensible LSP kinds."""
|
||||
|
||||
@pytest.mark.parametrize("language_server", [Language.SCSS], indirect=True)
|
||||
@pytest.mark.parametrize("language_server", [LanguageServerId.SCSS], indirect=True)
|
||||
def test_variable_symbol_kind(self, language_server: SolidLanguageServer) -> None:
|
||||
all_symbols, _ = language_server.request_document_symbols("_variables.scss").get_all_symbols_and_roots()
|
||||
by_name = {s["name"]: s for s in all_symbols}
|
||||
@@ -243,7 +243,7 @@ class TestScssSymbolKinds:
|
||||
f"Expected $color-primary to be Variable/Constant/Property, got {kind.name}"
|
||||
)
|
||||
|
||||
@pytest.mark.parametrize("language_server", [Language.SCSS], indirect=True)
|
||||
@pytest.mark.parametrize("language_server", [LanguageServerId.SCSS], indirect=True)
|
||||
def test_mixin_and_function_symbol_kinds(self, language_server: SolidLanguageServer) -> None:
|
||||
all_symbols, _ = language_server.request_document_symbols("_mixins.scss").get_all_symbols_and_roots()
|
||||
|
||||
@@ -264,7 +264,7 @@ class TestScssSymbolKinds:
|
||||
)
|
||||
assert SymbolKind(func["kind"]) in callable_kinds, f"Expected rem kind in {{Method, Function}}, got {SymbolKind(func['kind']).name}"
|
||||
|
||||
@pytest.mark.parametrize("language_server", [Language.SCSS], indirect=True)
|
||||
@pytest.mark.parametrize("language_server", [LanguageServerId.SCSS], indirect=True)
|
||||
def test_completion_kind_is_meaningful(self, language_server: SolidLanguageServer) -> None:
|
||||
"""A `$variable` completion must come back with a meaningful kind. Some Sass
|
||||
tags color-valued variables as ``Color`` (so editors render swatches) and
|
||||
@@ -307,7 +307,7 @@ class TestScssSymbolKinds:
|
||||
class TestSomeSassWithPlainCss:
|
||||
"""``Language.SCSS`` also handles plain ``.css`` via ``some-sass-language-server``."""
|
||||
|
||||
@pytest.mark.parametrize("language_server", [Language.SCSS], indirect=True)
|
||||
@pytest.mark.parametrize("language_server", [LanguageServerId.SCSS], indirect=True)
|
||||
def test_main_css_document_symbols(self, language_server: SolidLanguageServer) -> None:
|
||||
"""Each top-level rule selector in ``main.css`` must surface as a document symbol."""
|
||||
all_symbols, _ = language_server.request_document_symbols("css/main.css").get_all_symbols_and_roots()
|
||||
@@ -316,7 +316,7 @@ class TestSomeSassWithPlainCss:
|
||||
for selector in ("body", "#page-header", "#site-title", ".button", ".button-primary", ".button-secondary"):
|
||||
assert selector in joined, f"Expected selector '{selector}' to appear in CSS symbols: {names}"
|
||||
|
||||
@pytest.mark.parametrize("language_server", [Language.SCSS], indirect=True)
|
||||
@pytest.mark.parametrize("language_server", [LanguageServerId.SCSS], indirect=True)
|
||||
def test_theme_css_document_symbols(self, language_server: SolidLanguageServer) -> None:
|
||||
"""``theme.css`` contains a single ``:root`` block; the LS must report it as a symbol."""
|
||||
all_symbols, _ = language_server.request_document_symbols("css/theme.css").get_all_symbols_and_roots()
|
||||
@@ -324,7 +324,7 @@ class TestSomeSassWithPlainCss:
|
||||
joined = " | ".join(names)
|
||||
assert ":root" in joined, f"Expected ':root' selector to appear in CSS symbols: {names}"
|
||||
|
||||
@pytest.mark.parametrize("language_server", [Language.SCSS], indirect=True)
|
||||
@pytest.mark.parametrize("language_server", [LanguageServerId.SCSS], indirect=True)
|
||||
def test_full_symbol_tree_includes_css_files(self, language_server: SolidLanguageServer) -> None:
|
||||
"""The ``.css`` files alongside the SCSS workspace must populate the workspace symbol tree."""
|
||||
all_symbols = request_all_symbols(language_server)
|
||||
@@ -334,7 +334,7 @@ class TestSomeSassWithPlainCss:
|
||||
for f in (os.path.join("css", "main.css"), os.path.join("css", "reset.css"), os.path.join("css", "theme.css")):
|
||||
assert f in relative_paths, f"Expected {f} to appear in symbol tree"
|
||||
|
||||
@pytest.mark.parametrize("language_server", [Language.SCSS], indirect=True)
|
||||
@pytest.mark.parametrize("language_server", [LanguageServerId.SCSS], indirect=True)
|
||||
def test_hover_on_css_property(self, language_server: SolidLanguageServer) -> None:
|
||||
"""Hover on a CSS property name must produce non-empty MDN-backed content
|
||||
(Some Sass forwards ``vscode-css-languageservice``'s property reference data).
|
||||
@@ -351,7 +351,7 @@ class TestSomeSassWithPlainCss:
|
||||
text = contents["value"] if isinstance(contents, dict) else str(contents)
|
||||
assert "background" in text.lower(), f"Expected hover text to mention 'background', got: {text}"
|
||||
|
||||
@pytest.mark.parametrize("language_server", [Language.SCSS], indirect=True)
|
||||
@pytest.mark.parametrize("language_server", [LanguageServerId.SCSS], indirect=True)
|
||||
def test_property_completion_in_css_rule(self, language_server: SolidLanguageServer) -> None:
|
||||
"""Inside a CSS rule body the LS must offer standard property names —
|
||||
proves ``somesass.css.completion.enabled = true`` is being honoured.
|
||||
@@ -367,7 +367,7 @@ class TestSomeSassWithPlainCss:
|
||||
f"Expected at least one common CSS property name in completions, got sample: {sorted(labels)[:20]}"
|
||||
)
|
||||
|
||||
@pytest.mark.parametrize("language_server", [Language.SCSS], indirect=True)
|
||||
@pytest.mark.parametrize("language_server", [LanguageServerId.SCSS], indirect=True)
|
||||
def test_cross_file_completion_for_css_custom_property(self, language_server: SolidLanguageServer) -> None:
|
||||
"""Completion inside a ``var(...)`` call in ``main.css`` must surface the
|
||||
``--color-*`` custom properties declared in ``theme.css``.
|
||||
|
||||
Reference in new issue
Block a user