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

63
validators/__init__.py Normal file
View file

@ -0,0 +1,63 @@
from typing import List, Dict
class BaseValidator:
def validate(self, code: str, hardware: str, user_message: str) -> List[Dict]:
"""Return a list of issues found."""
return []
def find_line(self, code: str, substring: str) -> int:
for i, line in enumerate(code.splitlines(), 1):
if substring in line:
return i
return -1
from .esp32_basics import ESP32Validator
from .motor_control import MotorValidator
from .servo_control import ServoValidator
from .memory_safety import MemoryValidator
from .forge_theory import ForgeTheoryValidator
from .timing_safety import TimingValidator
from .arduino_compat import ArduinoValidator
from .style_guide import StyleValidator
from typing import List, Dict
class BaseValidator:
def validate(self, code: str, hardware: str, user_message: str) -> List[Dict]:
"""Return a list of issues found."""
return []
def find_line(self, code: str, substring: str) -> int:
for i, line in enumerate(code.splitlines(), 1):
if substring in line:
return i
return -1
from .esp32_basics import ESP32Validator
from .motor_control import MotorValidator
from .servo_control import ServoValidator
from .memory_safety import MemoryValidator
from .forge_theory import ForgeTheoryValidator
from .timing_safety import TimingValidator
from .arduino_compat import ArduinoValidator
from .style_guide import StyleValidator
from typing import List, Dict
class BaseValidator:
def validate(self, code: str, hardware: str, user_message: str) -> List[Dict]:
"""Return a list of issues found."""
return []
def find_line(self, code: str, substring: str) -> int:
for i, line in enumerate(code.splitlines(), 1):
if substring in line:
return i
return -1
from .esp32_basics import ESP32Validator
from .motor_control import MotorValidator
from .servo_control import ServoValidator
from .memory_safety import MemoryValidator
from .forge_theory import ForgeTheoryValidator
from .timing_safety import TimingValidator
from .arduino_compat import ArduinoValidator
from .style_guide import StyleValidator