dealflow-ai / tests /test_code_interpreter.py
PeterBot22's picture
feat: DealFlow AI MVP — 3-agent CrewAI due diligence system on HF Spaces
8dcf472 verified
"""Tests for the local CodeInterpreterTool."""
from __future__ import annotations
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).parent.parent))
class TestCodeInterpreterTool:
def test_basic_print(self):
from src.tools.code_interpreter import CodeInterpreterTool
tool = CodeInterpreterTool()
result = tool._run("print('hello world')")
assert "hello world" in result
def test_pandas_calculation(self):
from src.tools.code_interpreter import CodeInterpreterTool
tool = CodeInterpreterTool()
code = """
revenues = [100_000, 250_000, 600_000, 1_500_000, 3_750_000]
cagr = (revenues[-1] / revenues[0]) ** (1 / (len(revenues) - 1)) - 1
print(f"CAGR: {cagr:.1%}")
"""
result = tool._run(code)
assert "CAGR:" in result
assert "%" in result
def test_numpy_calculation(self):
from src.tools.code_interpreter import CodeInterpreterTool
tool = CodeInterpreterTool()
code = """
import numpy as np
arr = np.array([10, 20, 30, 40, 50])
print(f"Mean: {np.mean(arr)}, Std: {np.std(arr):.2f}")
"""
result = tool._run(code)
assert "Mean: 30.0" in result
def test_blocks_os_import(self):
from src.tools.code_interpreter import CodeInterpreterTool
tool = CodeInterpreterTool()
result = tool._run("import os; os.system('ls')")
assert "Error" in result or "blocked" in result.lower()
def test_blocks_open_call(self):
from src.tools.code_interpreter import CodeInterpreterTool
tool = CodeInterpreterTool()
result = tool._run("open('/etc/passwd').read()")
assert "Error" in result
def test_empty_code_returns_error(self):
from src.tools.code_interpreter import CodeInterpreterTool
tool = CodeInterpreterTool()
result = tool._run("")
assert "Error" in result
def test_syntax_error_handled(self):
from src.tools.code_interpreter import CodeInterpreterTool
tool = CodeInterpreterTool()
result = tool._run("def broken(:")
assert "Error" in result or "SyntaxError" in result