mirror of
https://github.com/tiennm99/serena.git
synced 2026-10-12 14:15:14 +00:00
Merge pull request #1205 from zerone0x/fix/dashboard-show-experimental-langs-1177
fix: allow adding experimental languages from dashboard
This commit is contained in:
2 files changed
+56
-1
No files matched your search
@@ -547,7 +547,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