mirror of
https://github.com/tiennm99/serena.git
synced 2026-10-19 16:16:11 +00:00
Fix Windows C# startup and Roslyn install
This commit is contained in:
1 parent
901bd2155a
commit
8e7c8feb84
4 files changed
+82
-6
No files matched your search
@@ -7,7 +7,7 @@ from unittest.mock import patch
|
||||
import pytest
|
||||
|
||||
from solidlsp.language_servers.common import RuntimeDependency
|
||||
from solidlsp.language_servers.csharp_language_server import CSharpLanguageServer
|
||||
from solidlsp.language_servers.csharp_language_server import ROSLYN_LONGEST_KNOWN_PACKAGE_MEMBER, CSharpLanguageServer
|
||||
from solidlsp.settings import SolidLSPSettings
|
||||
|
||||
|
||||
@@ -128,3 +128,33 @@ class TestNuGetOrgDownload:
|
||||
"solidlsp.language_servers.csharp_language_server.FileUtils.download_and_extract_archive_verified",
|
||||
):
|
||||
dependency_provider._download_nuget_package(test_dependency)
|
||||
|
||||
def test_download_nuget_package_uses_short_extraction_path_for_deep_windows_cache(self, tmp_path: Path):
|
||||
provider = object.__new__(CSharpLanguageServer.DependencyProvider)
|
||||
provider._ls_resources_dir = str(tmp_path.joinpath(*(["nested-cache-root"] * 8)))
|
||||
|
||||
test_dependency = RuntimeDependency(
|
||||
id="TestPackage",
|
||||
package_name="roslyn-language-server.win-x64",
|
||||
package_version="5.5.0-2.26078.4",
|
||||
url="https://www.nuget.org/api/v2/package/roslyn-language-server.win-x64/5.5.0-2.26078.4",
|
||||
extract_path="tools/net10.0/win-x64",
|
||||
)
|
||||
|
||||
def fake_download_and_extract(
|
||||
_url: str,
|
||||
target_path: str,
|
||||
*_args: object,
|
||||
**_kwargs: object,
|
||||
) -> None:
|
||||
deepest_package_member = Path(target_path) / f"tools/net10.0/win-x64/{ROSLYN_LONGEST_KNOWN_PACKAGE_MEMBER}"
|
||||
assert len(str(deepest_package_member)) < 260
|
||||
|
||||
with (
|
||||
patch("solidlsp.language_servers.csharp_language_server.platform.system", return_value="Windows"),
|
||||
patch(
|
||||
"solidlsp.language_servers.csharp_language_server.FileUtils.download_and_extract_archive_verified",
|
||||
side_effect=fake_download_and_extract,
|
||||
),
|
||||
):
|
||||
provider._download_nuget_package(test_dependency)
|
||||
@@ -0,0 +1,35 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from pathlib import Path
|
||||
from types import SimpleNamespace
|
||||
|
||||
import pytest
|
||||
|
||||
from solidlsp.language_servers.omnisharp import OmniSharp
|
||||
|
||||
|
||||
class _NoWaitEvent:
|
||||
def is_set(self) -> bool:
|
||||
return False
|
||||
|
||||
def wait(self, timeout: float | None = None) -> bool:
|
||||
raise AssertionError("OmniSharp startup must not wait for dynamic capability registration")
|
||||
|
||||
|
||||
@pytest.mark.csharp
|
||||
def test_omnisharp_startup_does_not_wait_for_capability_registration(tmp_path: Path) -> None:
|
||||
omnisharp = OmniSharp.__new__(OmniSharp)
|
||||
omnisharp.repository_root_path = str(tmp_path)
|
||||
omnisharp.server = SimpleNamespace(
|
||||
send=SimpleNamespace(initialize=lambda _params: {"capabilities": {}}),
|
||||
notify=SimpleNamespace(initialized=lambda _params: None, workspace_did_change_configuration=lambda _params: None),
|
||||
on_request=lambda *_args: None,
|
||||
on_notification=lambda *_args: None,
|
||||
start=lambda: None,
|
||||
)
|
||||
omnisharp.server_ready = _NoWaitEvent()
|
||||
omnisharp.definition_available = _NoWaitEvent()
|
||||
omnisharp.references_available = _NoWaitEvent()
|
||||
omnisharp.completions_available = _NoWaitEvent()
|
||||
|
||||
omnisharp._start_server()
|
||||
Reference in new issue
Block a user