mirror of
https://github.com/tiennm99/serena.git
synced 2026-10-12 18:16:43 +00:00
1 parent
0c915bd18d
commit
d5fb835871
2 files changed
+56
-1
No files matched your search
@@ -543,7 +543,7 @@ class SerenaDashboardAPI:
|
||||
from solidlsp.ls_config import Language
|
||||
|
||||
def run() -> ResponseAvailableLanguages:
|
||||
all_languages = [lang.value for lang in Language.iter_all(include_experimental=False)]
|
||||
all_languages = [lang.value for lang in Language.iter_all(include_experimental=True)]
|
||||
|
||||
# Filter out already added languages for the active project
|
||||
project = self._agent.get_active_project()
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
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 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,
|
||||
shutdown_callback=None,
|
||||
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
|
||||
Reference in new issue
Block a user