Rename project from SmartTools to CmdForge
Major rename operation: - Rename Python package: smarttools -> cmdforge - Update CLI entry point: smarttools -> cmdforge - Update all imports and module references - Update pyproject.toml with new name, URLs, entry point - Update all HTML templates with new branding - Update documentation (CLAUDE.md, README.md, docs/*, wiki/*) - Update environment variables: - SMARTTOOLS_ENV -> CMDFORGE_ENV - SMARTTOOLS_REGISTRY_DB -> CMDFORGE_REGISTRY_DB - SMARTTOOLS_TOKEN -> CMDFORGE_TOKEN - SMARTTOOLS_REGISTRY_* -> CMDFORGE_REGISTRY_* - Update Dockerfile and docker-compose.yml - Update tests to use new package name - Update scripts and examples - Update package.json and tailwind.config.js All 158 unit tests pass. The CLI is working correctly with the new cmdforge command. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
This commit is contained in:
+12
-12
@@ -3,15 +3,15 @@
|
||||
import pytest
|
||||
from unittest.mock import patch, MagicMock
|
||||
|
||||
from smarttools.runner import (
|
||||
from cmdforge.runner import (
|
||||
substitute_variables,
|
||||
execute_prompt_step,
|
||||
execute_code_step,
|
||||
run_tool,
|
||||
create_argument_parser
|
||||
)
|
||||
from smarttools.tool import Tool, ToolArgument, PromptStep, CodeStep
|
||||
from smarttools.providers import ProviderResult
|
||||
from cmdforge.tool import Tool, ToolArgument, PromptStep, CodeStep
|
||||
from cmdforge.providers import ProviderResult
|
||||
|
||||
|
||||
class TestSubstituteVariables:
|
||||
@@ -96,7 +96,7 @@ Line 3: {var1} again"""
|
||||
class TestExecutePromptStep:
|
||||
"""Tests for prompt step execution."""
|
||||
|
||||
@patch('smarttools.runner.call_provider')
|
||||
@patch('cmdforge.runner.call_provider')
|
||||
def test_successful_prompt(self, mock_call):
|
||||
mock_call.return_value = ProviderResult(
|
||||
text="This is the response",
|
||||
@@ -119,7 +119,7 @@ class TestExecutePromptStep:
|
||||
call_args = mock_call.call_args
|
||||
assert "Some text to summarize" in call_args[0][1]
|
||||
|
||||
@patch('smarttools.runner.call_provider')
|
||||
@patch('cmdforge.runner.call_provider')
|
||||
def test_failed_prompt(self, mock_call):
|
||||
mock_call.return_value = ProviderResult(
|
||||
text="",
|
||||
@@ -133,7 +133,7 @@ class TestExecutePromptStep:
|
||||
assert success is False
|
||||
assert output == ""
|
||||
|
||||
@patch('smarttools.runner.mock_provider')
|
||||
@patch('cmdforge.runner.mock_provider')
|
||||
def test_mock_provider_used(self, mock_mock):
|
||||
mock_mock.return_value = ProviderResult(text="mock response", success=True)
|
||||
|
||||
@@ -143,7 +143,7 @@ class TestExecutePromptStep:
|
||||
assert success is True
|
||||
mock_mock.assert_called_once()
|
||||
|
||||
@patch('smarttools.runner.call_provider')
|
||||
@patch('cmdforge.runner.call_provider')
|
||||
def test_provider_override(self, mock_call):
|
||||
mock_call.return_value = ProviderResult(text="response", success=True)
|
||||
|
||||
@@ -277,7 +277,7 @@ class TestRunTool:
|
||||
output, exit_code = run_tool(tool, "", {"name": "Alice"})
|
||||
assert output == "Hello, Alice!"
|
||||
|
||||
@patch('smarttools.runner.call_provider')
|
||||
@patch('cmdforge.runner.call_provider')
|
||||
def test_tool_with_prompt_step(self, mock_call):
|
||||
mock_call.return_value = ProviderResult(text="Summarized!", success=True)
|
||||
|
||||
@@ -315,7 +315,7 @@ class TestRunTool:
|
||||
assert exit_code == 0
|
||||
assert output == "Words: 4"
|
||||
|
||||
@patch('smarttools.runner.call_provider')
|
||||
@patch('cmdforge.runner.call_provider')
|
||||
def test_tool_with_multiple_steps(self, mock_call):
|
||||
mock_call.return_value = ProviderResult(text="AI response", success=True)
|
||||
|
||||
@@ -334,7 +334,7 @@ class TestRunTool:
|
||||
assert exit_code == 0
|
||||
assert "Result: AI response" in output
|
||||
|
||||
@patch('smarttools.runner.call_provider')
|
||||
@patch('cmdforge.runner.call_provider')
|
||||
def test_tool_dry_run(self, mock_call):
|
||||
tool = Tool(
|
||||
name="test",
|
||||
@@ -351,7 +351,7 @@ class TestRunTool:
|
||||
assert exit_code == 0
|
||||
assert "DRY RUN" in output
|
||||
|
||||
@patch('smarttools.runner.call_provider')
|
||||
@patch('cmdforge.runner.call_provider')
|
||||
def test_tool_provider_override(self, mock_call):
|
||||
mock_call.return_value = ProviderResult(text="response", success=True)
|
||||
|
||||
@@ -368,7 +368,7 @@ class TestRunTool:
|
||||
# Should use override
|
||||
assert mock_call.call_args[0][0] == "gpt4"
|
||||
|
||||
@patch('smarttools.runner.call_provider')
|
||||
@patch('cmdforge.runner.call_provider')
|
||||
def test_tool_prompt_failure(self, mock_call):
|
||||
mock_call.return_value = ProviderResult(text="", success=False, error="API error")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user