mirror of
https://git.mirrors.martin98.com/https://github.com/bytedance/deer-flow
synced 2025-10-04 13:16:32 +08:00
45 lines
1.6 KiB
Python
45 lines
1.6 KiB
Python
import unittest
|
|
import subprocess
|
|
from unittest.mock import patch
|
|
from src.tools.bash_tool import bash_tool
|
|
|
|
|
|
class TestBashTool(unittest.TestCase):
|
|
def test_successful_command(self):
|
|
"""Test bash tool with a successful command execution"""
|
|
result = bash_tool.invoke("echo 'Hello World'")
|
|
self.assertEqual(result.strip(), "Hello World")
|
|
|
|
@patch("subprocess.run")
|
|
def test_command_with_error(self, mock_run):
|
|
"""Test bash tool when command fails"""
|
|
# Configure mock to raise CalledProcessError
|
|
mock_run.side_effect = subprocess.CalledProcessError(
|
|
returncode=1, cmd="invalid_command", output="", stderr="Command not found"
|
|
)
|
|
|
|
result = bash_tool.invoke("invalid_command")
|
|
self.assertIn("Command failed with exit code 1", result)
|
|
self.assertIn("Command not found", result)
|
|
|
|
@patch("subprocess.run")
|
|
def test_command_with_exception(self, mock_run):
|
|
"""Test bash tool when an unexpected exception occurs"""
|
|
# Configure mock to raise a generic exception
|
|
mock_run.side_effect = Exception("Unexpected error")
|
|
|
|
result = bash_tool.invoke("some_command")
|
|
self.assertIn("Error executing command: Unexpected error", result)
|
|
|
|
def test_command_with_output(self):
|
|
"""Test bash tool with a command that produces output"""
|
|
# Create a temporary file and write to it
|
|
result = bash_tool.invoke(
|
|
"echo 'test content' > test_file.txt && cat test_file.txt && rm test_file.txt"
|
|
)
|
|
self.assertEqual(result.strip(), "test content")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|