Add comprehensive test suites for all new tools (20+ tests)
This commit is contained in:
76
tests/test_environment.py
Normal file
76
tests/test_environment.py
Normal file
@@ -0,0 +1,76 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import pytest
|
||||
import sys
|
||||
import os
|
||||
import platform
|
||||
|
||||
from core.tools.base import ToolContext
|
||||
from tools.environment import EnvironmentTool
|
||||
|
||||
|
||||
class TestEnvironmentTool:
|
||||
"""Test environment tool."""
|
||||
|
||||
@pytest.fixture
|
||||
def tool(self) -> EnvironmentTool:
|
||||
return EnvironmentTool()
|
||||
|
||||
def test_get_info(self, tool: EnvironmentTool) -> None:
|
||||
"""Test getting system info."""
|
||||
result = tool.get_info()
|
||||
assert "system" in result
|
||||
assert "machine" in result
|
||||
assert "hostname" in result
|
||||
assert result["system"] in ["Windows", "Linux", "Darwin"]
|
||||
|
||||
def test_python_info(self, tool: EnvironmentTool) -> None:
|
||||
"""Test getting Python info."""
|
||||
result = tool.get_python_info()
|
||||
assert "version" in result
|
||||
assert "implementation" in result
|
||||
assert "executable" in result
|
||||
assert result["version"] == platform.python_version()
|
||||
|
||||
def test_env_var(self, tool: EnvironmentTool) -> None:
|
||||
"""Test getting environment variable."""
|
||||
os.environ["TEST_VAR"] = "test_value"
|
||||
result = tool.get_env_var({"name": "TEST_VAR"})
|
||||
assert result["exists"] is True
|
||||
assert result["value"] == "test_value"
|
||||
|
||||
def test_env_var_nonexistent(self, tool: EnvironmentTool) -> None:
|
||||
"""Test getting nonexistent environment variable."""
|
||||
result = tool.get_env_var({"name": "NONEXISTENT_VAR_12345"})
|
||||
assert result["exists"] is False
|
||||
assert result["value"] is None
|
||||
|
||||
def test_env_var_invalid_type(self, tool: EnvironmentTool) -> None:
|
||||
"""Test with invalid name type."""
|
||||
with pytest.raises(ValueError, match="name must be string"):
|
||||
tool.get_env_var({"name": 123})
|
||||
|
||||
def test_all_env_vars(self, tool: EnvironmentTool) -> None:
|
||||
"""Test getting all environment variables."""
|
||||
result = tool.get_all_env_vars()
|
||||
assert "count" in result
|
||||
assert "vars" in result
|
||||
assert result["count"] > 0
|
||||
|
||||
def test_execute_info(self, tool: EnvironmentTool) -> None:
|
||||
"""Test execute with info action."""
|
||||
ctx = ToolContext(dry_run=False)
|
||||
result = tool.execute({"action": "info"}, ctx)
|
||||
assert "system" in result
|
||||
|
||||
def test_execute_python_info(self, tool: EnvironmentTool) -> None:
|
||||
"""Test execute with python_info action."""
|
||||
ctx = ToolContext(dry_run=False)
|
||||
result = tool.execute({"action": "python_info"}, ctx)
|
||||
assert "version" in result
|
||||
|
||||
def test_execute_invalid_action(self, tool: EnvironmentTool) -> None:
|
||||
"""Test with invalid action."""
|
||||
ctx = ToolContext(dry_run=False)
|
||||
with pytest.raises(ValueError, match="Unknown environment action"):
|
||||
tool.execute({"action": "invalid_action"}, ctx)
|
||||
Reference in New Issue
Block a user
