Files
wehub-resource-sync c6af9e284a
Tests / catch-all (windows-latest) (push) Has been cancelled
Tests / jvm (macos-latest) (push) Has been cancelled
Tests / jvm (ubuntu-latest) (push) Has been cancelled
Tests / jvm (windows-latest) (push) Has been cancelled
Tests / native (macos-latest) (push) Has been cancelled
Tests / native (ubuntu-latest) (push) Has been cancelled
Tests / native (windows-latest) (push) Has been cancelled
Tests / niche (ubuntu-latest) (push) Has been cancelled
Tests / other-langs (macos-latest) (push) Has been cancelled
Tests / other-langs (ubuntu-latest) (push) Has been cancelled
Tests / other-langs (windows-latest) (push) Has been cancelled
Tests / catch-all (macos-latest) (push) Has been cancelled
Tests / catch-all (ubuntu-latest) (push) Has been cancelled
Docs Build / build (push) Has been cancelled
Docs Build / deploy (push) Has been cancelled
CodeQL Advanced / Analyze (actions) (push) Has been cancelled
CodeQL Advanced / Analyze (javascript-typescript) (push) Has been cancelled
CodeQL Advanced / Analyze (python) (push) Has been cancelled
Codespell / Check for spelling errors (push) Has been cancelled
Build and Push Docker Images / build-and-push (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:39:38 +08:00

54 lines
2.0 KiB
Python

from collections.abc import Callable
from types import SimpleNamespace
from serena.dashboard import SerenaDashboardAPI
from solidlsp.ls_config import Language
class _DummyMemoryLogHandler:
def get_log_messages(self, from_idx: int = 0): # pragma: no cover - simple stub
return SimpleNamespace(messages=[], max_idx=-1)
def clear_log_messages(self) -> None: # pragma: no cover - simple stub
pass
class _DummyAgent:
def __init__(self, project: SimpleNamespace | None) -> None:
self._project = project
def register_config_changed_callback(self, callback: Callable[[], None]) -> None:
pass
def execute_task(self, func, *, logged: bool | None = None, name: str | None = None):
del logged, name
return func()
def get_active_project(self):
return self._project
def _make_dashboard(project_languages: list[Language] | None) -> SerenaDashboardAPI:
project = None
if project_languages is not None:
project = SimpleNamespace(project_config=SimpleNamespace(languages=project_languages))
agent = _DummyAgent(project)
return SerenaDashboardAPI(memory_log_handler=_DummyMemoryLogHandler(), tool_names=[], agent=agent, tool_usage_stats=None)
def test_available_languages_include_experimental_when_no_active_project():
dashboard = _make_dashboard(project_languages=None)
response = dashboard._get_available_languages()
expected = sorted(lang.value for lang in Language.iter_all(include_experimental=True))
assert response.languages == expected
def test_available_languages_exclude_project_languages():
dashboard = _make_dashboard(project_languages=[Language.PYTHON, Language.MARKDOWN])
response = dashboard._get_available_languages()
available = set(response.languages)
assert Language.PYTHON.value not in available
assert Language.MARKDOWN.value not in available
# ensure experimental languages remain available for selection
assert Language.ANSIBLE.value in available