mirror of
https://github.com/open-jarvis/OpenJarvis.git
synced 2026-07-28 13:26:48 +00:00
85 lines
2.7 KiB
Python
85 lines
2.7 KiB
Python
"""Tests for context injection integration in ``jarvis ask``."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import importlib
|
|
|
|
from click.testing import CliRunner
|
|
|
|
from openjarvis.cli import cli
|
|
|
|
|
|
def test_ask_no_context_flag():
|
|
"""The --no-context flag is accepted."""
|
|
result = CliRunner().invoke(cli, ["ask", "--no-context", "--help"])
|
|
# --help should succeed regardless
|
|
assert result.exit_code == 0
|
|
|
|
|
|
def test_ask_has_no_context_option():
|
|
"""ask --help lists the --no-context flag."""
|
|
result = CliRunner().invoke(cli, ["ask", "--help"])
|
|
assert result.exit_code == 0
|
|
assert "--no-context" in result.output
|
|
|
|
|
|
def test_get_memory_backend_returns_backend_even_when_empty(
|
|
tmp_path,
|
|
monkeypatch,
|
|
):
|
|
"""_get_memory_backend returns a backend for an empty DB.
|
|
|
|
Retrieval against an empty store is a valid operation — it simply
|
|
returns no hits. Callers must check ``len(results)``; returning
|
|
``None`` here would conflate "backend unavailable" with "no docs",
|
|
which is the kind of ambiguity that leads to silent grounding
|
|
failures downstream.
|
|
"""
|
|
from openjarvis.core.config import JarvisConfig, MemoryConfig
|
|
from openjarvis.core.registry import MemoryRegistry
|
|
from openjarvis.tools.storage.sqlite import SQLiteMemory
|
|
|
|
if not MemoryRegistry.contains("sqlite"):
|
|
MemoryRegistry.register_value("sqlite", SQLiteMemory)
|
|
|
|
config = JarvisConfig()
|
|
config.memory = MemoryConfig(
|
|
db_path=str(tmp_path / "empty.db"),
|
|
)
|
|
|
|
mod = importlib.import_module("openjarvis.cli.ask")
|
|
result = mod._get_memory_backend(config)
|
|
assert result is not None
|
|
# An empty backend should still retrieve cleanly (zero hits).
|
|
assert result.retrieve("anything", top_k=3) == []
|
|
if hasattr(result, "close"):
|
|
result.close()
|
|
|
|
|
|
def test_get_memory_backend_returns_backend_with_docs(
|
|
tmp_path,
|
|
monkeypatch,
|
|
):
|
|
"""_get_memory_backend returns a backend when docs exist."""
|
|
from openjarvis.core.config import JarvisConfig, MemoryConfig
|
|
from openjarvis.core.registry import MemoryRegistry
|
|
from openjarvis.tools.storage.sqlite import SQLiteMemory
|
|
|
|
if not MemoryRegistry.contains("sqlite"):
|
|
MemoryRegistry.register_value("sqlite", SQLiteMemory)
|
|
|
|
db_path = str(tmp_path / "test.db")
|
|
config = JarvisConfig()
|
|
config.memory = MemoryConfig(db_path=db_path)
|
|
|
|
# Pre-populate with a document
|
|
backend = SQLiteMemory(db_path=db_path)
|
|
backend.store("test document content")
|
|
backend.close()
|
|
|
|
mod = importlib.import_module("openjarvis.cli.ask")
|
|
result = mod._get_memory_backend(config)
|
|
assert result is not None
|
|
if hasattr(result, "close"):
|
|
result.close()
|