Fix tests and previous commit

This commit is contained in:
2025-12-09 07:11:02 +01:00
parent ca63865b07
commit da3d6f123d
7 changed files with 66 additions and 26 deletions

61
brain/.gitignore vendored
View File

@@ -1,61 +0,0 @@
# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
# Virtual environments
venv/
ENV/
env/
# IDE
.vscode/
.idea/
.ruff_cache
*.swp
*.swo
*~
# Qodo
.qodo/
# Memory and state files
memory.json
memory_data/
# Coverage reports
.coverage
.coverage.*
htmlcov/
coverage.xml
*.cover
# Pytest cache
.pytest_cache/
# OS
.DS_Store
Thumbs.db
# Secrets
.env
# Backup files
*.backup

View File

@@ -496,7 +496,7 @@ class Memory:
storage_dir: Directory for persistent storage
"""
self.storage_dir = Path(storage_dir)
self.storage_dir.mkdir(exist_ok=True)
self.storage_dir.mkdir(parents=True, exist_ok=True)
self.ltm_file = self.storage_dir / "ltm.json"

View File

@@ -1,5 +1,11 @@
"""Pytest configuration and shared fixtures."""
import sys
from pathlib import Path
# Ajouter le dossier parent (brain) au PYTHONPATH
sys.path.insert(0, str(Path(__file__).parent.parent))
import shutil
import tempfile
from pathlib import Path

View File

@@ -226,7 +226,7 @@ class TestFormatEpisodicContext:
tools = make_tools()
builder = PromptBuilder(tools)
context = builder._format_episodic_context()
context = builder._format_episodic_context(memory)
assert context == ""
@@ -235,7 +235,7 @@ class TestFormatEpisodicContext:
tools = make_tools()
builder = PromptBuilder(tools)
context = builder._format_episodic_context()
context = builder._format_episodic_context(memory_with_search_results)
assert "LAST SEARCH" in context
assert "Inception 1080p" in context
@@ -249,7 +249,7 @@ class TestFormatEpisodicContext:
tools = make_tools()
builder = PromptBuilder(tools)
context = builder._format_episodic_context()
context = builder._format_episodic_context(memory)
assert "LAST SEARCH" in context
assert "ACTIVE DOWNLOADS" in context
@@ -264,7 +264,7 @@ class TestFormatStmContext:
tools = make_tools()
builder = PromptBuilder(tools)
context = builder._format_stm_context()
context = builder._format_stm_context(memory)
# Should at least show language
assert "CONVERSATION LANGUAGE" in context or context == ""
@@ -276,7 +276,7 @@ class TestFormatStmContext:
tools = make_tools()
builder = PromptBuilder(tools)
context = builder._format_stm_context()
context = builder._format_stm_context(memory)
assert "CURRENT WORKFLOW" in context
assert "download" in context
@@ -290,7 +290,7 @@ class TestFormatStmContext:
tools = make_tools()
builder = PromptBuilder(tools)
context = builder._format_stm_context()
context = builder._format_stm_context(memory)
assert "CURRENT WORKFLOW" in context
assert "CURRENT TOPIC" in context

View File

@@ -7,7 +7,7 @@ from agent.registry import make_tools
class TestPromptBuilderToolsInjection:
"""Critical tests for tools injection in prompts."""
def test_system_prompt_includes_all_tools(self):
def test_system_prompt_includes_all_tools(self, memory):
"""CRITICAL: Verify all tools are mentioned in system prompt."""
tools = make_tools()
builder = PromptBuilder(tools)
@@ -19,7 +19,7 @@ class TestPromptBuilderToolsInjection:
tool_name in prompt
), f"Tool {tool_name} not mentioned in system prompt"
def test_tools_spec_contains_all_registered_tools(self):
def test_tools_spec_contains_all_registered_tools(self, memory):
"""CRITICAL: Verify build_tools_spec() returns all tools."""
tools = make_tools()
builder = PromptBuilder(tools)
@@ -30,7 +30,7 @@ class TestPromptBuilderToolsInjection:
assert spec_names == tool_names, f"Missing tools: {tool_names - spec_names}"
def test_tools_spec_is_not_empty(self):
def test_tools_spec_is_not_empty(self, memory):
"""CRITICAL: Verify tools spec is never empty."""
tools = make_tools()
builder = PromptBuilder(tools)
@@ -38,7 +38,7 @@ class TestPromptBuilderToolsInjection:
assert len(specs) > 0, "Tools spec is empty!"
def test_tools_spec_format_matches_openai(self):
def test_tools_spec_format_matches_openai(self, memory):
"""CRITICAL: Verify tools spec format is OpenAI-compatible."""
tools = make_tools()
builder = PromptBuilder(tools)
@@ -137,7 +137,7 @@ class TestPromptBuilderMemoryContext:
class TestPromptBuilderStructure:
"""Tests for prompt structure and completeness."""
def test_system_prompt_is_not_empty(self):
def test_system_prompt_is_not_empty(self, memory):
"""Verify system prompt is never empty."""
tools = make_tools()
builder = PromptBuilder(tools)
@@ -146,7 +146,7 @@ class TestPromptBuilderStructure:
assert len(prompt) > 0
assert prompt.strip() != ""
def test_system_prompt_includes_base_instruction(self):
def test_system_prompt_includes_base_instruction(self, memory):
"""Verify system prompt includes base instruction."""
tools = make_tools()
builder = PromptBuilder(tools)
@@ -154,7 +154,7 @@ class TestPromptBuilderStructure:
assert "assistant" in prompt.lower() or "help" in prompt.lower()
def test_system_prompt_includes_rules(self):
def test_system_prompt_includes_rules(self, memory):
"""Verify system prompt includes important rules."""
tools = make_tools()
builder = PromptBuilder(tools)
@@ -162,7 +162,7 @@ class TestPromptBuilderStructure:
assert "RULES" in prompt or "IMPORTANT" in prompt
def test_system_prompt_includes_examples(self):
def test_system_prompt_includes_examples(self, memory):
"""Verify system prompt includes examples."""
tools = make_tools()
builder = PromptBuilder(tools)
@@ -170,7 +170,7 @@ class TestPromptBuilderStructure:
assert "EXAMPLES" in prompt or "example" in prompt.lower()
def test_tools_description_format(self):
def test_tools_description_format(self, memory):
"""Verify tools are properly formatted in description."""
tools = make_tools()
builder = PromptBuilder(tools)
@@ -188,7 +188,7 @@ class TestPromptBuilderStructure:
tools = make_tools()
builder = PromptBuilder(tools)
context = builder._format_episodic_context()
context = builder._format_episodic_context(memory_with_search_results)
assert "LAST SEARCH" in context
assert "Inception" in context
@@ -201,7 +201,7 @@ class TestPromptBuilderStructure:
memory.stm.set_topic("test_topic")
memory.stm.set_entity("key", "value")
context = builder._format_stm_context()
context = builder._format_stm_context(memory)
assert "TOPIC" in context or "test_topic" in context
assert "ENTITIES" in context or "key" in context
@@ -213,7 +213,7 @@ class TestPromptBuilderStructure:
memory.ltm.set_config("test_key", "test_value")
context = builder._format_config_context()
context = builder._format_config_context(memory)
assert "CONFIGURATION" in context
assert "test_key" in context

View File

@@ -309,7 +309,7 @@ class TestFormatEpisodicContextEdgeCases:
tools = make_tools()
builder = PromptBuilder(tools)
context = builder._format_episodic_context()
context = builder._format_episodic_context(memory)
assert "LAST SEARCH" in context
@@ -327,7 +327,7 @@ class TestFormatEpisodicContextEdgeCases:
tools = make_tools()
builder = PromptBuilder(tools)
context = builder._format_episodic_context()
context = builder._format_episodic_context(memory)
# Should not crash
assert "LAST SEARCH" in context
@@ -339,7 +339,7 @@ class TestFormatEpisodicContextEdgeCases:
tools = make_tools()
builder = PromptBuilder(tools)
context = builder._format_episodic_context()
context = builder._format_episodic_context(memory)
assert "ACTIVE DOWNLOADS" in context
assert "0%" in context # Default progress
@@ -358,7 +358,7 @@ class TestFormatStmContextEdgeCases:
tools = make_tools()
builder = PromptBuilder(tools)
context = builder._format_stm_context()
context = builder._format_stm_context(memory)
assert "CURRENT WORKFLOW" in context
@@ -370,7 +370,7 @@ class TestFormatStmContextEdgeCases:
builder = PromptBuilder(tools)
try:
context = builder._format_stm_context()
context = builder._format_stm_context(memory)
assert "CURRENT WORKFLOW" in context or True
except (AttributeError, TypeError):
# Expected if None target causes issues
@@ -383,7 +383,7 @@ class TestFormatStmContextEdgeCases:
tools = make_tools()
builder = PromptBuilder(tools)
context = builder._format_stm_context()
context = builder._format_stm_context(memory)
# Empty topic might not be shown
assert isinstance(context, str)
@@ -395,6 +395,6 @@ class TestFormatStmContextEdgeCases:
tools = make_tools()
builder = PromptBuilder(tools)
context = builder._format_stm_context()
context = builder._format_stm_context(memory)
assert "EXTRACTED ENTITIES" in context