mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-05-03 01:07:31 +08:00
58 lines
2.2 KiB
Python
58 lines
2.2 KiB
Python
from __future__ import annotations
|
|
|
|
from argparse import Namespace
|
|
from unittest.mock import patch
|
|
|
|
import hermes_cli.setup as setup_mod
|
|
|
|
|
|
def test_setup_sections_include_workspace():
|
|
section_names = [name for name, _, _ in setup_mod.SETUP_SECTIONS]
|
|
assert "workspace" in section_names
|
|
|
|
|
|
def test_setup_workspace_rag_installs_optional_runtime_and_updates_config(monkeypatch):
|
|
config = {}
|
|
|
|
yes_no_answers = iter([True, True, True, True])
|
|
monkeypatch.setattr(setup_mod, "prompt_yes_no", lambda *args, **kwargs: next(yes_no_answers))
|
|
monkeypatch.setattr(setup_mod, "prompt_choice", lambda *args, **kwargs: 1) # gated
|
|
monkeypatch.setattr(setup_mod, "_workspace_rag_dependencies_ready", lambda: False)
|
|
monkeypatch.setattr(setup_mod, "_install_workspace_rag_dependencies", lambda: True)
|
|
|
|
setup_mod.setup_workspace_rag(config)
|
|
|
|
assert config["workspace"]["enabled"] is True
|
|
assert config["knowledgebase"]["enabled"] is True
|
|
assert config["knowledgebase"]["retrieval_mode"] == "gated"
|
|
assert config["knowledgebase"]["embeddings"]["provider"] == "local"
|
|
assert config["knowledgebase"]["embeddings"]["model"] == "google/embeddinggemma-300m"
|
|
assert config["knowledgebase"]["reranker"]["enabled"] is True
|
|
assert config["knowledgebase"]["reranker"]["provider"] == "local"
|
|
|
|
|
|
def test_run_setup_wizard_workspace_section_dispatches(monkeypatch, tmp_path):
|
|
args = Namespace(section="workspace", non_interactive=False, reset=False)
|
|
config = {}
|
|
|
|
monkeypatch.setattr(setup_mod, "ensure_hermes_home", lambda: None)
|
|
monkeypatch.setattr(setup_mod, "load_config", lambda: config)
|
|
monkeypatch.setattr(setup_mod, "get_hermes_home", lambda: tmp_path)
|
|
monkeypatch.setattr(setup_mod, "is_interactive_stdin", lambda: True)
|
|
|
|
called = {}
|
|
|
|
def fake_workspace(cfg):
|
|
called["config"] = cfg
|
|
|
|
monkeypatch.setattr(setup_mod, "setup_workspace_rag", fake_workspace)
|
|
monkeypatch.setattr(setup_mod, "SETUP_SECTIONS", [
|
|
("workspace", "Workspace Knowledgebase & Local RAG", fake_workspace),
|
|
])
|
|
|
|
with patch.object(setup_mod, "save_config") as save_config:
|
|
setup_mod.run_setup_wizard(args)
|
|
|
|
assert called["config"] is config
|
|
save_config.assert_called_once_with(config)
|