Add unit tests for analytics, fallback client, and refactored validators

- Implemented comprehensive unit tests for the BuddAI Analytics module, covering fallback statistics calculations.
- Created tests for the FallbackClient to ensure proper escalation to various AI models and handling of missing API keys.
- Developed unit tests for the refactored validator system, validating various hardware and coding standards.
- Established a base validator interface and implemented specific validators for ESP32, Arduino, motor control, memory safety, and more.
- Enhanced the validator registry to auto-discover and manage validators effectively.
- Included detailed validation logic for common issues in embedded systems programming, such as unused variables, safety timeouts, and coding style violations.
This commit is contained in:
JamesTheGiblet 2026-01-08 17:43:11 +00:00
parent 99ef8f5592
commit d4e09f6d13
43 changed files with 5036 additions and 622 deletions

View file

@ -36,6 +36,10 @@ class TestFallbackLogging(unittest.TestCase):
self.ai.shadow_engine = MagicMock()
self.ai.shadow_engine.get_all_suggestions.return_value = []
# Mock FallbackClient
self.ai.fallback_client = MagicMock()
self.ai.fallback_client.is_available.return_value = True
# Setup default mocks
self.ai.validator.validate.return_value = (True, [])
self.ai.hardware_profile.detect_hardware.return_value = "ESP32"
@ -61,6 +65,13 @@ class TestFallbackLogging(unittest.TestCase):
# Mock LLM
self.ai.llm.query.return_value = "Code: ```cpp\nvoid setup() {}\n```"
# Simulate file write in mock escalate since we mocked the client
def escalate_side_effect(*args, **kwargs):
with open(DATA_DIR / "external_prompts.log", "a", encoding="utf-8") as f:
f.write("Claude Prompt: fix logic\nMODEL: CLAUDE")
return "Fallback response"
self.ai.fallback_client.escalate.side_effect = escalate_side_effect
# Mock file opening
m = mock_open()
with patch('builtins.open', m):