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
54 lines
2.0 KiB
Python
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
|